加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 什么被添加到$scope.默认情况下,观察者在Angular中

发布时间:2020-12-17 07:49:13 所属栏目:安全 来源:网络整理
导读:我正在阅读 Build Your Own AngularJS并且对$scopes,$watch和$digest的工作方式有了一个很好的理解.我了解当你添加自己的$watch并调用你自己的$摘要时它是如何工作的.但是,我对于默认情况下究竟发生了什么感到困惑. 什么被添加到$scope.默认值为$$观察者?你
我正在阅读 Build Your Own AngularJS并且对$scopes,$watch和$digest的工作方式有了一个很好的理解.我了解当你添加自己的$watch并调用你自己的$摘要时它是如何工作的.但是,我对于默认情况下究竟发生了什么感到困惑.

>什么被添加到$scope.默认值为$$观察者?你放在$scope的所有东西?你指定ng模型的所有东西?都?别的什么?
>确切地说,默认情况下会触发$摘要吗?输入字段更改?使用ng-models输入字段?其他?

一些在内部使用$watch / $watchCollection / $watchGroup的通用指令:

> ng-model
> ng-bind / {{}}
> ng-show& NG-隐藏
> ng级
> ng-repeat
> ng-if
> ng-switch
> ng-include

请注意,唯一设置双向绑定的是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时
> ng-model更改时(例如输入输入时)
>通过$http服务
> $timeout和$interval

请注意,$apply和$digest之间有一个很大的区别:

调用范围.$digest()将仅在该范围及其子节点上执行观察者.

调用范围.$apply()将在$rootScope上触发$digest,这意味着将遍历所有范围并执行所有观察者.

$apply还接受表达式作为参数.此表达式将在try-catch语句中进行计算,任何异常都将传递给$exceptionHandler服务.

$digest不接受任何参数.

通常,当您追逐微优化并真正知道自己在做什么时,您只需要调用$digest而不是$apply.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读