У меня два контроллера и заводской. Я внедряю фабрику и контроллер в главный контроллер, вот фрагменты кода ниже:
Фабрика:
app.factory('TallyFactory', function(){
return {
correct: 0,
incorrect: 0
};
});
TallyController, который принимает TallyFactory:
app.controller('TallyController', function($scope, TallyFactory){
$scope.$watch('scores', function(newValue, oldValue){
console.info('changed!');
console.log('Old: ' + JSON.stringify(oldValue));
console.log('New: ' + JSON.stringify(newValue));
});
$scope.scores = TallyFactory;
});
MainController, который принимает TallyFactory и изменяет значение объекта TallyFactory:
app.controller('MainController', function ($scope,TallyFactory) {
$scope.addTally = function(){
TallyFactory.correct++;
}
});
Обратите внимание, что в моем TallyController (второй фрагмент) я добавил наблюдатель в $scope, прослушивающий изменения «счетов».
Когда я запускаю функцию «addTally» из моего MainController с помощью ng-click, она изменяет значение моего объекта Factory (TallyFactory). Поскольку произошли изменения, и я специально создал наблюдателя на своем TallyController ($scope.scores), не следует ли запустить цикл дайджеста и обновить мою консоль с новым значением моего TallyFactory?
Кроме того, мой TallyController НЕ вложен в мой MainController, они отделены друг от друга (не уверен на 100%, имеет ли это значение).
Я не уверен, почему цикл дайджеста не запускается, так как значения TallyFactory изменились.
$scope.$watch('scores.correct', ...
- person HankScorpio   schedule 20.08.2015true
в качестве третьего аргумента часов.$scope.$watch('scores', function(){}, true)
- person HankScorpio   schedule 20.08.2015value
короче). Объект, возвращаемый этой фабрикой, одни и те же при каждом внедрении службы. В противном случае это не будет синглтоном. - person Estus Flask   schedule 20.08.2015