2014-03-12 137 views
2

過濾器調用我有角的Web應用程序,並有鏈接是這樣的:角防止NG-鼠標懸停

<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

AngularJS是無法預測的過濾器的返回值是每次執行時間相同。所以調用上的任何東西就會重新觸發所有可見的過濾器。雖然Angular的速度非常快,但如果您使用了昂貴的過濾器,這可能會對性能造成不利影響,但它也會導致相當煩人的infinite digest loops

由於這些原因,我總是儘量避免使用過濾器。在你的情況下,你可能只需要以不同的方式顯示菜單項,如果它是活動的。我做了一個plunker,更詳細地演示了這種行爲。