ng-repeat에 대한 모델로 사용되는 배열에 항목을 동적으로 추가하는 데 문제가 있습니다. ng-repeat 배열에 각진 항목 추가
plunker
은 여기에 있습니다 : http://plnkr.co/edit/W4b34EDR8dP7ems7aFRV?p=preview나는 테이블 행의 목록을 가지고있다. 각 행에 내용이 각 행에 대해 동일한 선택 상자가 있습니다. select의 ng-model은 단순히 ng-repeat에서 항목으로 사용되는 문자열입니다 (설명하는 것이 더 어렵습니다!)
문제는 단추를 클릭 할 때입니다. 행을 추가합니다. 다음 단계를 따르십시오 :
- "단계 추가"를 클릭하십시오. 새 행에 공백 값이 표시됩니다.
- 새 행에서 항목 선택
- "단계 추가"를 다시 클릭하십시오.
새 행이 추가되지만 선택 항목은 3 행에서 지워집니다. 왜 이런 일이 일어나고 어떻게 피할 수 있습니까? 나는 물론 Google에 노력했지만, Google에 단어를 찾는 것은 어려운 문제입니다.
<tr ng-repeat="phase in phases track by $index">
<td>{{$index + 1}}</td>
<td><select ng-model='phase'>
<option ng-repeat="item in availablePhases" ng-value="item">{{item}}</option>
</select>
</td>
</tr>
그리고 컨트롤러 :
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.phases = ['Phase 1', 'Phase 2'];
$scope.availablePhases = ['Phase 0', 'Phase 1', 'Phase 2', 'Phase 3'];
$scope.add = function() {
$scope.phases.push('');
}
});
감사
는 여기에 몇 가지 코드입니다!
흥미 롭 변경 얻으려면. 나는 "phase in phase ..."를 잘못 가정했다. "for (String s : allStrings) ..."와 같은 종류의 루프 변수로 "phase"를 사용할 수 있음을 의미한다. 당신의 대답에 대해 정말 고마워요! – Stephanie
나는 이것에 대해 나는 틀렸다. 내가 실제로 생각하는 것은 "위상"은 범위가 새로 고쳐 졌을 때 참조가 손실되었을 때 ng-repeat의 임시 참조 였지만 여전히 처음 두 개가 결코 변경되지 않은 이유를 설명하지 못한다고 생각합니다. – mvndaai