AngularJS 中的 parentValueWatch 是什么?
What is parentValueWatch in AngularJS?
我正在使用 batarang 来确定一些性能问题的根源。更大的罪魁祸首之一是我自己的代码,但是这个 parentValueWatch 东西现在位居榜首,我不知道它在哪里或者是什么触发了它。谷歌搜索太多了,我的大脑都在地板上……有人知道吗?
(AngularJS v1.2.24)
ParentValueWatch
是指令检查其父范围以查看是否有任何值已更改,因此需要自行更改。
考虑简单的指令,
{
restrict:"AE",
scope:{
foo:'='
}
}
现在假设在父作用域中,foo
是一个对象。
$parent.$scope.foo = {
bar:"zim"
}
每个 $digest
周期,子 $scope 将需要检查父作用域的 foo
值及其每个属性。
如果 foo
是一个非常大且嵌套很深的对象,这将花费很长时间,这就是为什么要花这么长时间。
在 HTML 中,这可能看起来像这样:
<div parent-directive>
<div foo-directive foo=bar></div></div>
一个快速解决此问题的方法是 "freeze-dry" 使用 ng-init 的值。
<div parent-directive>
<div foo-directive ng-init='zug={bar:$parent.foo.bar}' foo=zug></div></div>
现在绑定到新对象的值。您失去了轻松绑定,但获得了性能。
这总是一个权衡。
我正在使用 batarang 来确定一些性能问题的根源。更大的罪魁祸首之一是我自己的代码,但是这个 parentValueWatch 东西现在位居榜首,我不知道它在哪里或者是什么触发了它。谷歌搜索太多了,我的大脑都在地板上……有人知道吗?
(AngularJS v1.2.24)
ParentValueWatch
是指令检查其父范围以查看是否有任何值已更改,因此需要自行更改。
考虑简单的指令,
{
restrict:"AE",
scope:{
foo:'='
}
}
现在假设在父作用域中,foo
是一个对象。
$parent.$scope.foo = {
bar:"zim"
}
每个 $digest
周期,子 $scope 将需要检查父作用域的 foo
值及其每个属性。
如果 foo
是一个非常大且嵌套很深的对象,这将花费很长时间,这就是为什么要花这么长时间。
在 HTML 中,这可能看起来像这样:
<div parent-directive>
<div foo-directive foo=bar></div></div>
一个快速解决此问题的方法是 "freeze-dry" 使用 ng-init 的值。
<div parent-directive>
<div foo-directive ng-init='zug={bar:$parent.foo.bar}' foo=zug></div></div>
现在绑定到新对象的值。您失去了轻松绑定,但获得了性能。
这总是一个权衡。