2014-11-11 2 views
0

지시문을 사용하여 한 달 피커를 만들려고합니다. 이 달을 인덱스/이름 객체의 배열로 정의하고 ng-options을 사용하여 지시문에 선택 드롭 다운을 작성했습니다.angularjs 지시문의 ng-options에서 객체의 인덱스를 반환하는 방법

내 목표는 지역 범위 변수 같은 달에

  • 패스,
  • 업데이트를 변수로하고,이
  • 을 :)처럼
  • 는 (읽기 HTML의 형태로이

<month-select month="myMonth"></month-select>

은 지금까지 나는 정수로 월 통과하지만 산부인과로 나온다 일단 내가 선택하면 ject. 예 :1 IN

: 사용자 6 월을 선택 : OUT

{ value : 6, name : 'Jun' }

난 그냥 모델 값이 여기에 6

가되고 싶어

내 지시어입니다 :

app.directive('monthSelect', function() { 
    return { 
     restrict : 'E', 
     replace : true, 
     scope : { month: '=' }, 
     controller : function ($scope) { 
      $scope.months = []; 
      $scope.month_names = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]; 
      $scope.month_indexes = [0,1,2,3,4,5,6,7,8,9,10,11]; 
      $scope.month_names.forEach(function (mn, i) { 
       $scope.months.push({ value : i+1, name : mn }); 
      }); 
     }, 
     template : '<select ng-model="month" ng-options="m.name for m in months track by m.value"></select>' 
    }; 
}); 

변경할 수있는 방법이 있습니까? 그것이 월 인덱스 만 업데이트합니까? 여기

는 plunkr입니다 : http://plnkr.co/edit/LVqRUCVO6Rpr9QlDtacQ?p=preview

답변

2

<select ng-model="month" 
     ng-options="m.value as m.name for m in months"> 
</select> 

에 템플릿을 변경

그리고 어쩌면, 만약 당신이 좋아하면, 당신이 마법처럼

var month_names = ['Jan', 'Feb', 'Mar', ..., 'Dec']; 

$scope.months = []; 
angular.forEach(month_names, function(name, num) { 
    this.push({ value:num, name:name }); 
}, $scope.months); 
+0

작품과 같이 지시어의 컨트롤러를 리팩토링 수 있습니다! 덕분에 – chriskelly

+1

Np도 대답을 편집했습니다. –

관련 문제