我有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
过滤调用?如何防止它并仅在渲染之前执行过滤器。
谢谢
答案 0 :(得分:1)
AngularJS无法预测每次执行过滤器的返回值都是相同的。因此,在作用域上调用任何将重新触发所有可见的过滤器。虽然Angular一般来说速度非常快,但如果你使用了一些昂贵的过滤器,这可能对性能有害,但它也会导致infinite digest loops,这非常烦人。
由于这些原因,我总是尽量避免使用过滤器。在您的情况下,您可能只需要以不同的方式显示菜单项(如果它处于活动状态)。我已经制作了一个plunker来更详细地演示这种行为。