Читая эту прекрасную книгу (Mastering Web Development in AngularJS), я наткнулся на этот код:
var Restaurant = function ($q, $rootScope) {
var currentOrder;
this.takeOrder = function (orderedItems) {
currentOrder = {
deferred:$q.defer(),
items:orderedItems
};
return currentOrder.deferred.promise;
};
this.deliverOrder = function() {
currentOrder.deferred.resolve(currentOrder.items);
$rootScope.$digest();
};
this.problemWithOrder = function(reason) {
currentOrder.deferred.reject(reason);
$rootScope.$digest();
};
Я понимаю, что $rootScope.$digest();
вызовы сделаны для того, чтобы предупредить Угловое, что состояние по Promise
«s был обновлен.
Правильно ли я понимаю? Кроме того, необходимо ли совершать вышеуказанные звонки $rootScope.$digest();
?
Какая версия AngularJS была написана против? Я никогда не использовал '$ rootScope. $ Digest();', но я начал с AngularJS версии 1.0.x. Как правило, вам нужно использовать '$ scope. $ Apply()' при уведомлении AngularJS о модификации данных за пределами среды AngularJS (например: событие jQuery). Если действия инициируются стандартной директивой AngularJS (например: 'ng-click'), тогда нет необходимости вызывать' $ scope. $ Apply() '. – rtcherry
книга использует '1.0.2' в соответствии с образцом кода' index.html'. –