1
我剛剛開始使用AngularJS,我仍然試圖瞭解創建服務。從this和this,我的理解是隻要對變量的更改在Angular中,就不需要$監視它們。我複製代碼here,並且修改了它,看看我能得到我的第一個服務的工作:AngularJS - 非HTTP服務不更新範圍變量
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>
當點擊該按鈕時,控制檯日誌顯示正確的計數,但「消息」保持不變。原始代碼應該是人爲設計的,並且意在表明可以使用服務在控制器之間共享代碼。
所以我的問題是,爲什麼這不工作?如果我錯過了非常簡單的事情,我很抱歉。我是一個初學者,我仍然試圖得到一堆東西。
哦,爲什麼它在$ http服務中工作?我想這是因爲$ http返回$ q.promise對象,而不是值和角模板系統可以等到所有的承諾解決,並顯示結果。 –