我$watch
荷蘭國際集團的對象更改和設置$scope.changed = true
,但是有些情況下,我想將它設置爲false
我已經改變了數據之後編程:
$scope.$watch('data', function() {
$scope.changed = true;
}, true);
function loadData(data) {
$scope.data = data;
// I want to run $scope.$apply() here so the $watch is triggered
// before changed is set back to false
$scope.$apply();
$scope.changed = false;
}
// in DOM:
<div ng-click="loadData(newData)">
如果我使用非角度事件手動運行loadData
,它可以很好地工作(當然$apply
之後會再次顯示範圍),但是如果從類似上面的ngClick
之類的東西運行它,則會出現「$ apply already in progress」錯誤。
使用$timeout
在大多數情況下都能正常工作,但也有一些地方我真的希望它同步發生。
function loadData(data) {
$scope.data = data;
// what I want to avoid:
$timeout(function() {
$scope.changed = false;
})
}
是否可以同步應用範圍更改,還是我在做更改處理錯誤?
謝謝。
謝謝,效果很好,經過一段時間擺弄之後,開銷應該不會太差。我修改了它,所以在'changed'被重置後的第一次數據更改後,它不需要運行比較。謝天謝地,我不需要知道它是否恢復到原來的狀態。 [Plnkr](http://plnkr.co/edit/OI2zobbwsm0NKgqlXj6v?p=preview) –