我是angularJs的初學者,因爲我認爲我的$scope
有一些簡單的問題。如何啓用自動腕錶angularJs?
我有一個對象$scope.tasks
我從服務器收到。它看起來像:
{
2: {id: 2, name: 'name1', user: 3},
3: {id: 3, name: 'name2', user: 1},
4: {id: 4, name: 'name3', user: 4},
}
還我有一個函數,更新用戶任務:
$scope.managePlannedIterationTask = function(taskId, userId) {
var data = {
'taskId' : taskId,
'userId' : userId
};
$http.post("url", data).success(function(data, status) {
$scope.tasks[taskId].user = userId; //#1
});
};
我也有自定義函數$scope.test();
此功能必須於任務的用戶每次更改後執行,例如更新查詢,並在更新//#1
後,我試圖用這個目標$手錶$ watchCollection:
$scope.$watchCollection('tasks', function() {
$scope.test();
})
但這沒有幫助。現在,當我更新我的$ scope.tasks時,我必須在所有地方插入$scope.test()
。這很令人悲傷。 我該如何自動執行?
您什麼時候註冊手錶,以及如何觸發更改? –
@DavidL我在我的控制器的末尾註冊了手表,並在select中用ng-change更改了觸發器。 – Neversmile
這是你的問題。在開始時註冊它。如果你在最後註冊它,那麼它有一個合理的機會,它將不會註冊,直到它將要觀看的任何交互已經過去。最後,這可能是設計氣味的指示。您可能需要考慮採用回調式方法。 –