将AngularJS与其他JavaScript-MVC框架分开的一件事是,它能够使用绑定将JavaScript中的绑定值回传到HTML。当您向$ scope变量赋值任何值时,Angular会自动执行此操作。
但是这是多么自动呢?有时候,Angular不会接受变化,所以我需要调用$ scope。$ apply()或$ scope。$ digest()来通知角度来获取更改。有时当我运行这些方法之一时,它会抛出一个错误,并说一个摘要已经在进行中。
由于绑定({{}}花括号或ng属性中的任何内容)都使用eval回显,这就意味着Angular不断轮询$ scope对象以查找更改,然后执行eval将这些更改推送到DOM / HTML?或者有AngularJS不知何故弄清楚使用魔术变量,触发事件,当变量值更改或分配时触发?我从来没有听说过它被所有浏览器完全支持,所以我怀疑。
AngularJS如何跟踪它的绑定和范围变量?
除了Mark发现的
documentation section,我认为我们可以尝试枚举所有可能的变化来源。
原文链接:https://www.f2er.com/angularjs/146941.html>用户与HTML输入互动(‘text’,‘number’,‘url’,’email’,‘radio’,‘checkbox’)。 AngularJS有inputDirective.’text’,’number’,’url’和’email’输入绑定listener handler为’input’或’keydown’事件。侦听器处理程序calls scope.$apply.’radio’和’checkBox’绑定单击事件的类似处理程序。
>用户与选择元素交互。 AngularJS有selectDirective在’change’事件上有类似的行为。
>使用$timeout service也做$rootScope.$apply()的定期更改。
> eventDirectives(ngClick等)也使用scope.$apply。
> $ http也使用$rootScope.$apply()。> AngularJS世界之外的变化应该使用范围$ apply,你知道。