我正在尝试使用指令制作月份选择器。我将月份定义为索引/名称对象数组,并使用ng-options在指令中创建选择下拉列表。
我的目标是
<month-select month="myMonth"></month-select>
到目前为止,我将月份作为整数传递,但是一旦我做出选择,它就会成为一个对象。例如
IN 1
:用户选择Jun:
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>'
};
});
有没有办法更改它以便它只更新月份索引?
答案 0 :(得分: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);