0

두 개의 어레이가 있고 루핑을 통해 테이블을 만듭니다. I가 변경 기능을 수행하는 선택을 변경할 때 제 헤더 행은 열 이름을 배열하고, 사용자가 상기 열 이름 ng-change는 실행되지 않지만 ng-click은 ng-repeat에서 수행합니다.

<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

컨트롤러를 보여줄 수 있습니까? –

답변

2

에서 작동 :

A 입력 값의 변화가있을 때 NG 변화 표현 만 발사되는 모델에 새로운 가치를 부여합니다. 이 이유 때문에 NG 변경은 입력에서만 작동합니다. 기본적으로 코드 각도에서는 모델에 값이 변경되지 않기 때문에 언제 ngChange가 실행되어야하는지 알 수 없습니다.

+0

흠, 여기에 뭔가 있습니다. 나는 그 어레이에 init을했고 나는 이전보다 훨씬 더 작다. 감사! – shaneburgess

+0

해결 방법이있을 수 있습니다. 변경하려는 작업과 동일한 이벤트를 트리거하는 시계를 구현하는 것이 좋습니다. 참고 : 이로 인해 단일 입력 변경이 아닌 모델 변경시 시계가 실행됩니다. –

2

는 offcial api document에 따라, ng-change는 @worldask하여 답변을 확장하려면 input

Evaluate the given expression when the user changes the input.