gpt4 book ai didi

javascript - 什么被认为是 Angular 中的观察者?

转载 作者:搜寻专家 更新时间:2023-11-01 04:15:34 24 4
gpt4 key购买 nike

Angular 中的“watchers”是什么?观察者本身是唯一类型的观察者,还是其他 Angular 构造(例如 ngModel 观察者)也是如此?

还是我错过了全局?例如,观察者是什么使 ngModel 之类的指令起作用?

更新:有没有办法判断何时存在观察者?在测试中我想知道什么时候调用 scope.$digest()

最佳答案

watchers is nothing but dirty checking, which keeps a track of the old value and new value

他们会在每个摘要周期中接受评估。它可以是范围变量或任何表达式的组合。 Angular 会在每个摘要周期收集所有这些观察者,并将其维护在 $$watchers 数组中。您可以通过在 Controller 中执行 console.log($scope.$watchers) 来查看有多少观察者。

标记

<body class="container" ng-controller="myCtrl">
Hello {{test}}
I'm test to show $$watchers {{test1}}
<div ng-show="show">SHowiing this div using ng-show</div>
<div ng-if="show">SHowiing this div using ng-show</div>
Watcher is not compulsary that should scope variables {{'1'}}
</body>

Plunkr

在上面的代码中猜猜有多少观察者,正如您所看到的,有 3 个 {{}} 插值指令将放置在观察者数组中,然后如果您在控制台中看到 $scope.$$watchers 它将显示 5 个观察者。

怎么显示有 5 个观察者。正如我们只能看到 3,实际上我们使用了 ng-showng-if 指令,它们在内部将 $watch 放在提供的表达式上在它的属性值中。 & 这些表达式在每个摘要周期中得到评估。

You could also create your custom watcher by using $watch(deep/simple watch) & $watchGroup

您也可以让 watcher 使用 $attrs.$observe,这与 watch 的工作原理相同,但它唯一的特殊之处在于,它适用于插值变量。

$attrs.$observe('test',function(value){
alert('')
});

大多数 angular 指令在内部使用观察器,如 ng-repeatng-showng-ifng-include ng-switchng-bind、插值指令{{}}、过滤器等。管理双向绑定(bind)。

关于javascript - 什么被认为是 Angular 中的观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31793606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com