我仍然遇到同样的问题,ng-repeat 中的过滤器和函数一直被调用。
此处的示例http://plnkr.co/edit/G8INkfGZxMgTvPAftJ91?p=preview,只要您在一行中更改某些内容,someFilter
就会调用过滤器 1000 次。
显然这是因为子范围的任何更改都会冒泡到其父范围,导致 $digest 运行,导致所有过滤器运行(https://stackoverflow.com/a/15936362/301596)。那正确吗?在我的特定情况下如何防止它发生?
如何使其仅在已更改的项目上运行?
在我的实际用例中,即使更改甚至不在 ng-repeat 的项目上也会调用过滤器,它是如此毫无意义,它实际上会导致性能问题..
// 编辑从 plunker 中清除了所有不必要的东西 http://plnkr.co/edit/G8INkfGZxMgTvPAftJ91?p=preview