Angular阻止过滤器调用ng-mouseover

时间:2014-03-12 08:00:46

标签: angularjs mouseevent

我有Angular Web应用程序,有这样的链接:

<a id="{{ model.name }}" href="{{ model.url }}" 
   ng-bind="model.name | active_menu: model.name" 
   ng-click="click_on_model(model.name)"> 
   ng-mouseover="hover(model.name")
</a>

为什么active_menu执行时每次ng-mouseover过滤调用?如何防止它并仅在渲染之前执行过滤器。

谢谢

1 个答案:

答案 0 :(得分:1)

AngularJS无法预测每次执行过滤器的返回值都是相同的。因此,在作用域上调用任何将重新触发所有可见的过滤器。虽然Angular一般来说速度非常快,但如果你使用了一些昂贵的过滤器,这可能对性能有害,但它也会导致infinite digest loops,这非常烦人。

由于这些原因,我总是尽量避免使用过滤器。在您的情况下,您可能只需要以不同的方式显示菜单项(如果它处于活动状态)。我已经制作了一个plunker来更详细地演示这种行为。