4
我有一個菜單小部件,其中每個菜單項可以展開到另一個子菜單。東西類似:http://plnkr.co/MGqCkAFUexSzSfcwthu5?p=preview方法返回href被調用ng-href被調用
鏈接標記是:
<a class="link-class"
ng-href={{ getLink(item) }}
ng-style="setTextAlignment(level)">
{{ item.name }}
</a>
隨着控制器中定義的下述方法:
/**
* @param {!angular.Scope} scope The scope of the directive.
* @param {!Object} item The menuitem.
* @return {string} Whether current user can access item.
* @private
*/
CollapsibleSubMenu.getLink_ = function(scope, item) {
console.log('link called');
return item['subMenu'] ? '' : item['link'];
};
所以基本上,如果項具有子菜單(子菜單== = true),它不應該有一個href(但是來自後端的項目數據具有子菜單項:true和一個有效的鏈接,這對於舊的菜單實現是可以的。)
現在的問題是,儘快菜單項出現在屏幕上,我可以看到console.log打印消息的鏈接每秒鐘左右調用。一旦檢索到的項目對象不會改變。那麼爲什麼這個getLink方法被頻繁調用呢?
好了,所以這是否意味着在每一個範圍的方法將被調用每一個消化週期?如果我直接將方法條件與插值指令一起使用,那麼(錯誤地)如下所示: 'ng-href = {{item ['subMenu'] &&''||] item ['link']}}' 這會提高性能嗎? – abhink 2014-09-26 03:47:56
如果它是一個函數,那麼是的...它會被調用每一個'$ digest'循環。這是因爲Angular必須知道值是否已經改變,並且唯一的方法就是執行該函數。如果你想避免這種情況,那麼你應該預先計算結果並將它們保存到一個可以綁定的變量中。 – Josh 2014-09-26 13:04:01