Ho questo codice all'interno di una direttiva angolare, e trovo il comportamento di $ Watch un po 'confuso. L'updateSelect si chiama in un "ng-click":Angular Watch e sequenza di eventi ng-
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);
Quando clicco sul pulsante (trigger updateSelect), e guardo il console, che vedo "update" e poi "guardare". La prima cosa che accade all'interno della funzione è selectionCtrl.activeList
, quindi mi aspetto di vedere "watch" e quindi "update".
Non dovrebbe guardare il trigger non appena la matrice è cambiata?
La funzione deve finire prima come JavaScript è singolo filettato –
Vedo, così se 'selectionCtrl.activeList' è binded ad un ng ripetizione, quindi il ng- la ripetizione non si aggiornerà fino alla fine di updateSelect, giusto? –
Si dovrebbe aggiungere che come risposta, grazie Gruff –