Я начинаю с 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.test()
во все места, когда я обновляю свои $ scope.tasks. Это очень грустно. Как я могу сделать это автоматически?
Когда вы регистрируете часы и как вы запускаете изменения? –
@DavidL Я регистрирую часы в конце своего контроллера и сработал с изменением ng в списке. – Neversmile
Это твоя проблема. Зарегистрируйте его в начале. Если вы зарегистрируете его в конце, есть разумный шанс, что он не будет зарегистрирован, пока какое-либо взаимодействие, которое он будет наблюдать, уже прошло. И, наконец, это может показаться дизайнерским запахом. Вместо этого вы можете использовать подход обратного вызова. –