0

問題。我有一個條目表($scope.entries),每行(ng-repeat)有5列,其中2列具有用於各種轉換的定製過濾器。Angular.js過濾器和函數的範圍每秒都在變化

現在我在active_entry($scope.active_entry),它正在改變每秒,因爲它和角度如何工作(我猜),整個範圍不斷檢查,我的過濾器執行。

這會導致觀看錶達式在Batarang隨着時間的推移而高空飛行。

我如何使用爲active_entry創建某種隔離範圍,這樣我的濾鏡不會每隔一遍又一遍地被渲染?

正在制定指令是創建隔離範圍的唯一方法嗎?它會起作用嗎?如果我以後在控制器中需要隔離範圍的值,該怎麼辦?

回答

0

您在問題中提出了很多問題。最好在單獨的SO問題中問他們每個人。

只要Angular digest cycle運行,所有手錶和過濾器都會運行。改變Angualar「內部」的東西將導致摘要循環運行。你怎麼改變$scope.active_entry?如果你可以在Angular之外改變它,你可能可以做你想做的事。正如您所提到的,您還必須將該屬性放入新的子範圍(scope: true)或隔離範圍(scope: {...}),然後您可以撥打$scope.digest()(在更改active_entry後)僅摘錄該範圍。

創建指令將是創建隔離範圍的最佳方法。您可以使用ng-controller或指令創建子範圍。

參見https://groups.google.com/d/topic/angular/1XtEAX93ces/discussion

+0

這有點定時器,所以active_entry正在每秒更新一次以$超時.. – foxx 2013-04-11 06:16:29

+0

我不明白這一點,我創建了一個孤立的範圍http://plnkr.co/edit/8UqVXWFTdutIQ4sHDPAe?p =父範圍上的預覽和過濾器每秒仍在執行(檢查控制檯).. – foxx 2013-04-14 09:05:40

+0

啊我看到$ timeout的第三個參數和$ digest()。 – foxx 2013-04-14 09:21:26