改變我使用$資源,在我的控制器項目的裝陣:觀看承諾(資源)的角度1.2.0+
$scope.items = api.items.query();
的$scope.items
現在是答應。一旦解決,它包含項目數組。比我有一些方法,操縱物品,例如:
// template
<div ng-repeat="item in items">
<a href="" ng-click="doSomething(item)">Do it!</a>
</div>
// controller:
$scope.doSomething = function(item) {
item.$doSomething(); // the items
};
在這裏,我想觀看$scope.items
變化,所以它得到通知後的任何項目的變化。我試過這個:
$scope.$watch($scope.items, function() {
console.log('changed');
});
但這不起作用 - doSomething更改對象後不會觸發它。對第三個objectEquality
參數都沒有幫助。我也試過$watchCollection
,但沒有運氣。
我發現這個工作了很短的時間 - 自從角1.2.rc2引入了承諾解包(https://github.com/angular/angular.js/issues/3503),但它在1.2.0(https://github.com/angular/angular.js/issues/4158)中被刪除。
所以現在有(目前穩定是角1.2.4)任何方式如何做到這一點?
謝謝!
P.S .:這個問題也在這個問題中討論過:AngularJS - binding/watching a function which returns a promise,但這不適用於1.2.0+。
也許是因爲這樣? https://github.com/angular/angular.js/commit/5dc35b527b3c99f6544b8cb52e93c6510d3ac577 – jpsimons
我知道它,但:「此功能已被棄用,如果絕對需要,它可以在過渡時期重新啓用」 - 我寧願不依靠已棄用的功能... –
我剛剛堆疊了相同的問題。你可以試試$ scope。$ watch($ scope.items。$ resolved,function(){}); – acidron