У меня есть два контроллера и один завод. Первый контроллер делает HTTP-запрос на сервер и возвращает строку, которую он записывает на фабрику. Затем второй контроллер должен быть обновлен новой строкой, чего не произойдет.Контроллер AngularJS не обновляется на заводе
соответствующий код:
...
.factory('user', function() {
return {
name: {str: ''},
passwordHashed: {str: ''},
userType: {str: 'none'},
};
})
.controller('nav', ['$scope', 'user', function($scope, user) {
$scope.allSites = [
//example what a page looks like, i have several more pages and several more usertypes
{name: 'home', title: 'Home', allowed: ['none', 'admin']},
];
$scope.allowedSites = []; //displayed in navigation
angular.forEach($scope.allSites, function(site) {
if(contains(site.allowed, user.userType.str) != -1) $scope.allowedSites.push(site);
});
}])
.controller('loginCTRL', ['$scope', '$http', 'user', function($scope, $http, user) {
$http.get('url').success(function(data) {
//some code
user.name.str = $scope.enteredUsername;
user.passwordHashed.str = $scope.passwordHashed;
user.userType.str = data; //admin
});
});
Это, как предполагается, регенерировать Навигационное каждый раз, когда изменяется UserType но после того, как Логин, например, ничего не происходит. Я обыскал вокруг, и некоторые сообщения говорят, что вы должны поместить строки в отдельные объекты, но это ничего не исправить. Я все еще держал его (все это {str: 'bla'}
).
Контроллеры и завод должны быть частью одного и того же модуля. пожалуйста, напишите полный код. – Xerxes
Я все еще не понимаю, что вы ожидаете от контроллера 'nav'. Вы говорите, что когда свойство 'userType' будет обновляться, вы ожидаете, что массив' allowedSites' должен автоматически изменяться и связываться? –