Я новичок в ui router и angularjs. Проблема, с которой я столкнулся, - это -
В моем заголовке
<li ng-class="{active: $state.includes('settings')}" id="header01">
<a ui-sref="settings.personal"> <span id="header02" > Settings</span> </a>
</li>
В моем main.js у меня есть -
$stateProvider.state("settings",{
abstract: true,
url: '/Settings',
templateUrl: 'Settings/settings.html',
resolve: {
},
controller: ['$scope', '$state', 'contacts', 'utils',
]
});
$stateProvider.state("settings.personal",{
url:'/Personal',
controller: "settingPersonal",
templateUrl: "Settings/personal.html"
});
$stateProvider.state("settings.additional",{
url:'/Additional',
controller: "settingPersonal",
templateUrl: "Settings/Additional.html"
});
$stateProvider.state("settings.reset",{
url:'/ResetPass',
controller: "myCtrl2 as second",
templateUrl: "Settings/password_reset.html"
});
Теперь, когда я перехожу от персональной к любой другой вкладке, настройки в заголовке становятся неактивными. Как это решить.
Спасибо.
Один из подходов - использовать state.data
, например:
.state('settings', {
url: '/settings',
templateUrl: 'settings/settings.html',
data: {
pageTitle: 'Settings'
}
})
Затем, на ваш взгляд, вы можете получить доступ к $state.current.data
:
<li ng-class="{active: $state.current.data.pageTitle('Settings')}">
<a ui-sref="settings">Settings</a>
</li>
<li ng-class="{active: $state.current.data.pageTitle('About')}">
<a ui-sref="settings">About</a>
</li>
Но лично я бы, вероятно, поместил навигационные элементы в ng-repeat и создавал заголовок/класс страницы динамически с помощью state.data
, чтобы избежать заголовков страниц с жестким кодированием.