Her görünüm için menü ve denetleyici için bir denetleyicim var. Başlamak istediğim, etkin menü öğesinin görsel olarak seçilebilmesi için active
sınıfını menü öğesine eklemektir. Bu çalışmayı elde etmek için mevcut menü öğesini (sayı) saklamak için bir servis yarattım. İşte benim görüşüm. Eğer yerel $scope
değişkene hizmetinden değişkeni bağlayan görebileceğiniz gibiDeğer, diğer denetleyiciden servise güncellenmiyor
body
div.menu(ng-controller="menuCtrl")
ul
li(ng-class="{selected: menuItem===0}")
a(href='#/')
i.material-icons.medium visibility
li(ng-class="{selected: menuItem===1}")
a(href='#/posts')
i.material-icons.medium library_books
li(ng-class="{selected: menuItem===2}")
a(href='#/categories')
i.material-icons.medium loyalty
span test {{menuItem}} // test menuItem variable
div.row-fluid
ng-view
İşte menuCtrl
kontrolör
app.controller('menuCtrl', ['$scope', '$http', 'global', '$interval', function($scope, $http, GLOBAL, $interval) {
$scope.menuItem = GLOBAL.menuItem;
}])
bu.
app.controller('postsCtrl', ['$scope', '$http', 'global', '$location', function($scope, $http, GLOBAL, $location) {
// ...
GLOBAL.menuItem = 1;
// ...
}])
diğer tüm görünüm denetleyicileri için aynı, yani:
Ve burada böyle hizmet en menuItem
için assing belirli bir değere bir satır ekleyin her görünümü kumandam Sonra hizmet
app.factory('global', function($http) {
return {
menuItem: 0,
}
})
var Bu menuItem
2,3,4, vs ..
Sorun şu ki, menuItem
değişkeni değiştiyse bile Birkaç menü öğesinde yalamak, menü altındaki değer (test yorumunu koydum) hala 0'dır ve sonuç olarak sadece ilk menü öğesi active
sınıfına sahiptir.
Neden?
Bu sorunuza cevap vermez ama bunun için mevcut olan bir çözümü (örneğin, açısal-ui-yönlendirici-menüler) (https://github.com/nitintutlani/angular-ui-router-menus) kullanmanızı tavsiye ederim. – damd