0

问题。我有一个条目表($scope.entries),每行(ng-repeat)有 5 列,其中 2 列有针对各种转换的定制过滤器。

现在在同一个范围内,我有 active_entry( $scope.active_entry),它每秒钟都在变化,因为它以及 angular 的工作原理(我猜),整个范围都在不断检查,我的过滤器也被执行。

这导致Batarang 中的Watch Expressions随着时间的推移而高涨。

如何使用为 active_entry 创建某种隔离范围,这样我的过滤器就不会每秒一遍又一遍地渲染?

制定指令是创建隔离范围的唯一方法吗?它会起作用吗?如果我稍后在控制器中需要来自隔离范围的值怎么办?

4

1 回答 1

0

你在你的问题中问了很多问题。最好在单独的 SO 问题中分别询问他们。

每当一个Angular 摘要循环运行时,所有的监视和过滤器都会运行。更改 Angualar “内部”的内容将导致摘要循环运行。你怎么变$scope.active_entry?如果您可以在 Angular 之外更改它,您也许可以做您想做的事。正如您所提到的,您还必须将该属性放入新的子范围(scope: true)或隔离范围(scope: {...})中,然后您可以调用$scope.digest()(在更改之后active_entry)仅消化该范围。

创建指令将是创建隔离范围的最佳方式。您可以使用 ng-controller 或指令创建子范围。

另请参阅https://groups.google.com/d/topic/angular/1XtEAX93ces/discussion

于 2013-04-10T21:03:58.617 回答