2016-07-01 3 views
11

for 루프의 드롭 다운을 채우고 있으며 표현식을 기반으로 각 드롭 다운의 기본값을 설정하고 싶습니다. 이것은 작동하는 것하지만 내 문제는 내가 이상 -되지 않습니다 변경 이벤트를 발생 선택을 통해 기본값을 설정할 때입니다.각도 : 드롭 다운, 화재 - 변경을 방지하기 위해

드롭 다운이 실제로 변경된 경우에만 변경 이벤트가 발생되기를 바랍니다. 옵션 요소를 통해 반복 드롭 다운

+1

값을 설정하기 위해 ngModel을 사용해보십시오 –

답변

4

에 대한 각 재료를 사용

<div layout="row" ng-if="layer.Styles && layer.Styles.length > 1"> 
    <md-input-container class="md-icon-float md-block layer-style"> 
     <md-select ng-change="vm.changeLayerStyle(layer,selectedStyle)" ng-model="selectedStyle" ng-model-options="{trackBy: '$value.Name'}" aria-label="Change Layer Style"> 
      <md-option ng-repeat="style in layer.Styles" ng-value="style" ng-selected="style.IsDefault == true"> 
       {{style.DisplayName}} 
      </md-option> 
     </md-select> 
    </md-input-container> 
</div> 

명 문제를 제공의 역사를 가지고있다. 일반적으로 선택 부분에 ng-options을 사용하라고 말하고 싶지만 특별히 재료 구성 요소를 사용해야하므로 옵션이 아닙니다.

가장 좋은 해결책은 아니지만 변경 이벤트가 발생하면 마지막 값의 복사본을 유지하고 현재 값과 비교하여 문제를 해결할 수 있습니다. 해당 값이 변경되지 않은 경우 이벤트를 무시하십시오. layer.Styles을 설정하면 많은 업데이트가 실행되기 때문에 약간의 조정이 필요할 수 있습니다.

우리는 놀고 싶지 않았기 때문에 (이미 트랙 - 컨트롤을 제어하기 위해 사용하고 있음) updateOn 속성을 가지고 놀아 보지 말고 선택한 속성을 설정하면 트리거됩니다. 값 blur이 여기에 있습니다.

+0

그래요. 첫 번째 옵션을 사용했는데, ng-change에서 호출 된 함수에서 (serviceLayer.Style === style.Name) return; 그리고 그것은 내가 원하는 것을 나에게 준다. 나는 중계기에서 그것을 제어하는 ​​것이 좋았을 것이다. 그러나 오 잘 – StevieB

관련 문제