3

$ scope. $ watch 문에서 ng-options을 설정하면 문제가 발생합니다.ng-options의 값과 레이블이 동일한 경우 버그가 발생합니까?

다음 작품 : <select ... ng-options="x.val as x.id for x in options"></select>

하지만이되지 않습니다 : <select ... ng-options="x.val as x.val for x in options"></select>

Plunker showing my issue -- click 'update options'

옵션은 이전 모델의 값이 설정되어있는 경우 것, 그리고 라벨과 가치는 모델은 사용 가능한 옵션과 일치하지 않습니다.

이 버그입니까? 아니면 잘못된 것입니까?

샘플 컨트롤러 코드 :

$scope.myModel = 'Two'; 
$scope.$watch('loadTrigger', function(newValue, oldValue) { 

    if (newValue == oldValue) { return; } 

    $scope.options = [{id: 1, text: 'One'}, {id: 2, text: 'Two'}...]; 
}) 

샘플보기 : 시계 트리거 및 옵션이 업데이트됩니다

<select ng-model="myModel" ng-options="x.text as x.text for x in options">...</select> 

은 선택이 아니라 예상보다 빈 또는 기본 옵션이 표시됩니다 " 두". 그러나 레이블과 값이 다를지라도 (모든 경우에도) 모든 것이 예상대로 작동합니다.

+0

질문에 관련 코드도 함께 게시하십시오. – PSL

+0

좋은 질문이지만 코드의 관련성이 높고 문제가되는 부분을 질문에 추가해야합니다. 질문은 자급 자족해야한다 –

+0

미안하지만, 기본적으로 내 첫 번째 게시 - 잘하면 지금은 충분한 정보를 추가했습니다. – Galf

답변

0

Angular associates가 바운드 모델을 선택한 방식의 어두운 영역 중 하나입니다. 몇 시간 전 내가 1.2 track by 작동하지 않고 각도의 GitHub의에서 설명이 issue 및 접근 방법을 발견

<select ng-model="textLabel" 
     ng-options="x.text for x in dynamicOptions track by x.text"> 
    <option value="">[No Value]</option> 
</select> 

편집 : 한마디로

, track by를 추가 (그리고 select as를 사용하지 않는)이 해결 .x 각도 -> 따라서 어두운 부분

+0

두 가지를 섞어서는 안되며 완전히 다른 목적으로 사용됩니다. ** [here] (https://code.angularjs.org/1.3.9/docs/api/ng/directive/select#-select-as-and-track-by-)를 참조하십시오 ** 그러나 내가 열 수 없기 때문에 plunker 나는 원래의 문제점이 무엇인지 모릅니다. – PSL

+1

이 솔루션이 모호한 문서와 모순되는 것 같습니까? - PSL이 이길테니까 – Galf

+0

죄송합니다 - 방금 편집했습니다. 예, 둘 다 사용해서는 안됩니다. –