У меня есть этот код внутри директивы angular, и я нахожу поведение $watch немного запутанным. Функция updateSelect вызывается в "ng-click":
scope.updateSelect = function (type) {
scope.selectionCtrl.activeList = scope.seedLists[type];
scope.selectionCtrl.activeListKey = type;
scope.selectionCtrl.activeSelection = scope.selection[type];
scope.selectionCtrl.staged = [];
scope.selectionCtrl.stageRemove = [];
if (type !== scope.activeTab) {
scope.activeTab = type;
}
console.log("update");
};
scope.$watch('selectionCtrl.activeList', function(newValue, oldValue) {
console.log("watch");
}, true);
Когда я нажимаю кнопку (запускает updateSelect) и смотрю консоль, я вижу "обновление", а затем "смотреть". Первое, что происходит внутри функции, - это selectionCtrl.activeList
, поэтому я ожидаю увидеть "смотреть", а затем "обновить".
Не следует смотреть триггер сразу после изменения массива?