我有两个控制器和一个工厂。我将工厂和控制器注入主控制器,下面是代码片段:
工厂:
app.factory('TallyFactory', function(){
return {
correct: 0,
incorrect: 0
};
});
接受 TallyFactory 的 TallyController:
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 添加了一个观察器,用于监听“分数”何时发生变化。
当我通过 ng-click 从我的 MainController 运行“addTally”函数时,它会更改我的工厂对象 (TallyFactory) 的值。由于发生了变化,并且我专门在我的 TallyController ($scope.scores) 上创建了一个观察程序,不应该触发摘要循环并且我的控制台更新为我的 TallyFactory 的新值吗?
此外,我的 TallyController 没有嵌套在我的 MainController 中,它们彼此分开(不是 100% 确定这是否重要)。
我不确定为什么在 TallyFactory 更改值后没有触发摘要循环。