2016-10-04 88 views
0

我有一個數組,我正在循環這個數組並調用一個函數進入這個ng-repeat,並且這個函數在一個指令 的鏈接函數中,所以我的問題是,ng-repeat只有兩次循環(數組長度的物品),但調用向鏈路功能比 兩次在這裏我的代碼片段ngRepeat錯誤,調用函數

link:function(scope){ 
     $scope.test = function() { 
     console.log('sssss'); 
    }} 

和模板更是

<div ng-repeat ="item in items> {{test()}}></div>

請幫助我防止調用測試函數超過項目長度。

回答

1

你應該這樣做,

<div ng-repeat ="item in items" ng-init="test()"> </div> 
+0

你能解釋你爲什麼使用niInit嗎? –

+0

@ Wa'elJazmaty只要div初始化,函數就會被調用 – Sajeetharan

+0

@ Wa'elJazmaty爲什麼你不標記答案? – Sajeetharan

0

原因test()獲取調用的次數超過數組項長度 因爲這{{test()}}的。

AngularJS爲{{}}註冊了一個watcher(綁定)。

這個watcher記錄值是否已被改變(它將舊值與新值進行比較)。 watcher的表達式(在你的情況下,test())在此過程中被評估爲atleast

您可以閱讀更多關於它here

這就是你的test()比數組長度增加的原因。

<div ng-repeat ="item in items" ng-init="test()"> </div> 

如果使用ng-inittest()只會按每個重複一次初始化(叫)。