angularjs – 什么被添加到$scope.默认情况下,观察者在Angular中
我正在阅读
Build Your Own AngularJS并且对$scopes,$watch和$digest的工作方式有了一个很好的理解.我了解当你添加自己的$watch并调用你自己的$摘要时它是如何工作的.但是,我对于默认情况下究竟发生了什么感到困惑.
>什么被添加到$scope.默认值为$$观察者?你放在$scope的所有东西?你指定ng模型的所有东西?都?别的什么?
一些在内部使用$watch / $watchCollection / $watchGroup的通用指令:
> ng-model 请注意,唯一设置双向绑定的是ng-model(范围 – > view& view – >范围). 其他人设置了单向绑定(范围 – >视图). 简单地暴露一些例如控制器的$scope将不会添加观察者. 例如,以下内容不会导致添加观察程序: angular.module('myApp',[]).controller('Controller',function MyCtrl($scope) { $scope.value = 1; }); 和…一起: <body ng-app="myApp" ng-controller="Controller"> </body> 但是,如果您使用以下内容替换HTML,则会添加一个观察者: <body ng-app="myApp" ng-controller="Controller"> <div>{{value}}</div> </body> 触发摘要周期时的一些常见情况: >评估ng-click时 请注意,$apply和$digest之间有一个很大的区别: 调用范围.$digest()将仅在该范围及其子节点上执行观察者. 调用范围.$apply()将在$rootScope上触发$digest,这意味着将遍历所有范围并执行所有观察者. $apply还接受表达式作为参数.此表达式将在try-catch语句中进行计算,任何异常都将传递给$exceptionHandler服务. $digest不接受任何参数. 通常,当您追逐微优化并真正知道自己在做什么时,您只需要调用$digest而不是$apply. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |