数据绑定如何在AngularJS框架中工作?
我没有在他们的网站上找到技术细节.当数据从视图传播到模型时,它或多或少清楚它是如何工作的.但是AngularJS如何在没有setter和getter的情况下跟踪模型属性的变化?
我发现有一些JavaScript观察者可以做这项工作.但Internet Explorer 6和Internet Explorer 7不支持它们.那么AngularJS如何知道我改变了例如以下内容并在视图上反映了这一变化?
myobject.myproperty="new value";
Run Code Online (Sandbox Code Playgroud) 将AngularJS与其他JavaScript-MVC框架区分开来的一件事是它能够使用绑定将绑定值从JavaScript回显到HTML.当您为$ scope变量赋值时,Angular会"自动"执行此操作.
但这有多自动?有时,Angular不会接受更改,所以我需要调用$ scope.$ apply()或$ scope.$ digest()来通知angular拾取更改.有时,当我运行这些方法中的任何一个时,它会抛出一个错误,并表示摘要已在进行中.
由于绑定({{}}括号或ng-属性内的任何内容)都与eval一起回应,这意味着Angular会不断轮询$ scope对象以查找更改,然后执行eval将这些更改推送到DOM/HTML?或者AngularJS以某种方式找出了使用魔术变量来触发变量值变化或分配时触发的事件?我从来没有听说过所有浏览器都完全支持它,所以我对此表示怀疑.
AngularJS如何跟踪它的绑定和范围变量?
Angular应用程序使用ng-click()属性而不是onclick事件.
为什么是这样?
我现在正在阅读很多关于AngularJS的内容,并且我遇到了神奇的$ watch功能.我理解如何使用它,但我想知道它是如何在后台实现的.它是时间间隔功能吗?或者是Angular在每次执行声明时都会调用此表吗?
我现在不想深入研究源代码,如果你们中的一个人已经知道答案并希望分享他对这个主题的了解,我会很高兴.
谢谢.
如果首先更改范围属性,然后再广播事件,那么相应的观察者回调和事件监听器回调是否始终以相同的顺序执行?例如:
$scope.foo = 3;
$scope.$broadcast('bar');
Run Code Online (Sandbox Code Playgroud)
和其他地方:
$scope.$watch('foo', function fn1(){...});
$scope.$on('bar', function fn2(){...});
Run Code Online (Sandbox Code Playgroud)
将fn1永远执行fn2,反之亦然,或者订单不能依赖?请引用消息来源,最好是官方角度文档.
如果它很重要:让我们假设$ scope.foo =并且$ broadcast出现在由ng-click调用的函数中(即用户交互)
[旁白]抱歉问题标题很草率 - 如果你有更好的东西请重命名.