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