Я так смущен, используя $scope.$digest()
способ. Насколько я знаю, когда мы называем $scope.$digest()
его не будет обновлять значение области родительского, так
ее обрабатывает все из наблюдателей в текущей области и ее детей
, но когда я call $scope.$digest()
его также обновляет родительскую область, в этом случае $rootScope
.
В следующем примере у меня есть демонстрация. В $rootScope
у меня есть переменная с именем value_on_root
, поэтому каждый раз, когда я вызываю событиена входе, я вызываю угловую функцию и внутри нее меняю значение переменной file_src
, которое находится на $scope
, а также меняю значение переменной value_on_root
, который находится на $rootScope
, поэтому, когда я звоню $scope.$digest
, его обновление вызывает наблюдателей на $rootScope
тоже.
Проверьте пример здесь
Click to see example in CODEPEN
Hi @Kreepn, спасибо за ответ, но вы не отвечаете на мой вопрос вообще, в этом ответе вы рассказываете мне о том, как цикл дайджест работает на angularjs, и я уже знаю это. Когда вы вызываете $ scope. $ Digest() обрабатывает все наблюдатели текущей области и ее дочерних элементов, поэтому, если вы видели мой пример, есть переменная, которая живет в $ rootScope, и хотя я называю $ scope. $ digest() эта переменная обновляется. – oletob
@evolquez Довольно уверен, что это точный ответ на ваш вопрос. Из-за характера цепочек вызовов один вызов $ digest запускает корневой кодекс, чтобы проверить его собственные свойства. Вы вносите изменения через '$ rootScope.value_on_root =« Значение обновлено »;' и оно обновляет его соответственно в кодексе. – KreepN
@evolquez Точное подобное объяснение можно найти здесь: http://stackoverflow.com/questions/12333410/why-scope-apply-calls-rootscope-digest-rather-than-this-digest – KreepN