5
我正在使用batarang來確定某些性能問題的來源。其中一個更大的罪魁禍首是我自己的代碼,但是這個parentValueWatch事件現在已經成爲圖表的頂端,我不知道它在哪裏或觸發它。我的大腦在谷歌地圖上被谷歌搜索...有人知道嗎?AngularJS中的parentValueWatch是什麼?
(AngularJS v1.2.24)
我正在使用batarang來確定某些性能問題的來源。其中一個更大的罪魁禍首是我自己的代碼,但是這個parentValueWatch事件現在已經成爲圖表的頂端,我不知道它在哪裏或觸發它。我的大腦在谷歌地圖上被谷歌搜索...有人知道嗎?AngularJS中的parentValueWatch是什麼?
(AngularJS v1.2.24)
ParentValueWatch
是當它的父範圍指令檢查,看看是否有值發生了變化,因此,需要將自身改變。
考慮簡單的指令,
{
restrict:"AE",
scope:{
foo:'='
}
}
現在,讓我們在父範圍說,foo
是一個對象。
$parent.$scope.foo = {
bar:"zim"
}
每個$digest
循環,孩子$範圍將需要檢查父範圍的foo
價值和它的各個屬性。
如果foo
是一個非常大且深度嵌套的對象,這將需要很長時間,因此它需要這麼長時間。
的HTML裏面看,這可能是這樣的:
<div parent-directive>
<div foo-directive foo=bar></div></div>
一個快速解決有關此是「凍幹」使用NG-初始化值。
<div parent-directive>
<div foo-directive ng-init='zug={bar:$parent.foo.bar}' foo=zug></div></div>
現在綁定到新對象的值。你失去了簡單的約束,但獲得了性能。
它總是一個折衷。
這是一個函數,用於監視父範圍的變化與使用'scope:{param:「=」}''的指令的隔離範圍。這是[源代碼](https://github.com/angular/angular.js/blob/v1.2.24/src/ng/compile.js#L1487)。確保您的綁定值不綁定到長時間運行的函數 – 2015-02-11 21:08:42