我刚刚开始使用 AngularJS,但我仍在尝试了解创建服务。从this和this来看,我的理解是只要变量的变化在 Angular 内部,就不需要 $watch 了。我从这里复制了代码,并对其进行了修改以查看是否可以使我的第一个服务正常工作:
myApp.factory('ListService', function() {
var ListService = {};
var list = ['a', 'b', 'c'];
ListService.addItem = function(item) { list.push(item); }
ListService.size = function() { return list.length; }
ListService.size1 = list.length;
return ListService;
});
function Ctrl1($scope, ListService) {
$scope.message = ListService.size();
$scope.addItem = function(){
ListService.addItem('d');
console.log("size() is " + ListService.size());
console.log("size1 is " + ListService.size1);
}
}
function Ctrl2($scope, ListService) {
$scope.message = ListService.size1;
}
html很简单:
<div ng-controller="Ctrl1"> Count is: {{ message }}
<input type="button" ng-click="addItem">
</div>
<div ng-controller="Ctrl2"> Count is: {{ message }}
</div>
单击按钮时,控制台日志显示正确的计数,但“消息”保持不变。原始代码应该是人为设计的,旨在表明服务可用于跨控制器共享代码。
所以我的问题是,为什么这不起作用?如果我错过了一些非常简单的事情,我深表歉意。我是一个初学者,我仍在努力掌握一些东西。