0

我有幾個數組,並且在循環它們以構建一個表。第一報頭行是列名的陣列,並且選擇框的第二行的是,用戶將使用選擇映射到上述列名ng-change在ng-repeat中沒有觸發但是ng-click做了

<h2>CSV Parser</h2> 
<div class="alert alert-info" ng-if="helpText"> 
    {{helpText}} 
</div> 
<table class="table table-striped table-hover"> 
    <thead> 
     <tr> 
      <th ng-repeat="col in data.cols track by $index">{{col}}</th> 
     </tr> 
     <tr> 
      <th ng-repeat="col in data.cols track by $index"> 
       <select class="form-control" 
        ng-options="colToMap as colToMatch for colToMatch in colsToMatch" 
        ng-change="setColMap($index,colToMap)" 
        ng-model="lastFieldSet[$index]"> 
        <option value="">Select Field</option> 
       </select> 

      </th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="row in data.rows track by $index"> 
      <td ng-repeat="text in row track by $index">{{text}}</td> 
     </tr> 
    </tbody> 
</table> 

當我改變任何變化函數的作用的選擇的根本不開火,但如果我將它改爲點擊,它會啓動。 lastFieldSet []模型在任何時候都不會更新。

關於這裏發生了什麼的任何想法?

+0

你能告訴我們控制器嗎? – 2014-09-19 15:28:27

回答

2

要通過@worldask的答案擴大:

時,有一個輸入值變化的NG-變化表達只發射了爲該模型帶來新的價值。正因爲如此,ng-change只能用於輸入。基本上,在你的代碼中,角度不知道什麼時候應該觸發ngChange,因爲模型沒有值更改。

+0

嗯,你在這裏的東西。我在那個陣列上做了一個初始化,而且我比以前進一步。謝謝! – shaneburgess 2014-09-19 15:38:38

+0

有一種可能的解決方法,您可以考慮實施一個手錶,該手錶將觸發與您正在嘗試進行更改相同的事件。注意:這會導致手錶發生任何模型更改,而不是單次輸入更改。 – 2014-09-19 15:44:03

2

根據對官方api documentng-change僅適用於input

Evaluate the given expression when the user changes the input. 
相關問題