2013-10-09 3 views
1

위한 NG-옵션 모델에 대한 인덱스를 입력 :(<a href="http://jsfiddle.net/EyBVN/" rel="nofollow">fiddle</a> 참조) 다음의 코드에 대한 간단한 배열

HTML :

<div ng-app ng-controller="MyCtrl"> 
    <select ng-model="ampm" ng-options="currOption for currOption in ['AM', 'PM']"></select> 
    AM/PM: {{ampm}} 
</div> 

JS :

function MyCtrl($scope) { 
    $scope.ampm = "AM"; 
} 

결과 is, HTML :

<select ng-model="ampm" ng-options="currOption for currOption in ['AM', 'PM']" class="ng-pristine ng-valid"> 
    <option value="0" selected="selected">AM</option> 
    <option value="1">PM</option> 
</select> 

... 완벽하게 괜찮습니다. 그러나 'AM''PM'ampm 모델에 포함됩니다. 이 모델에 0 또는 1과 같은 인덱스를 넣을 수 있습니까? 배열의 위치를 ​​나타내는 정수 인덱스를 원하지만이 위치에서 다시 계산해야하는 값이 필요하지 않습니다.

UPDATE

쌍의 배열을 만들지 않도록하는 방법이 있는가?

답변

7

당신은 모델로 요소의 인덱스를 사용하기를 선택 설정할 수 있습니다. 나는 jsFiddle 업데이트되었습니다 http://docs.angularjs.org/api/ng.directive:select

:

http://jsfiddle.net/EyBVN/28/

HTML :

<div ng-app ng-controller="MyCtrl"> 
    <select 
    ng-model="ampm" 
    ng-options="options.indexOf(currOption) as currOption for currOption in options"></select> 
    AM/PM: {{ampm}} 
</div> 

JS 각 문서에 설명 된대로

select as label for value in arrayng-options 구문을 사용합니다 :

function MyCtrl($scope) { 
    $scope.options = ['AM', 'PM']; 
    $scope.ampm = 0; 
} 
+0

정확 하 게, 감사합니다! –

3

뭐 그런?

<div ng-app ng-controller="MyCtrl"> 
    <select ng-model="selectItem" ng-options="currOption as currOption.value for currOption in ampm"></select> 
    AM/PM: {{selectItem.name}} 
</div> 

컨트롤러

function MyCtrl($scope) { 
    $scope.ampm = [{name: "AM",value: "0" },{name: "PM",value: "1" }]; 

    $scope.selectItem = $scope.ampm[0]; 
} 

데모 Fiddle

+0

예,이 새 컬렉션에 배열을 변환해야합니다. 나는 이것을 피할 수 있는지 알고 싶었습니다. –

+0

@AndreyChaschev하지만 콤보에 숫자를 넣으시겠습니까? –

+0

컴파일 된 HTML 마크 업은 완벽합니다. 따라서 숫자 값은 괜찮습니다. 캡션이 아닌 모델로 가져 오려고합니다. –

관련 문제