如何创建一个为ng-options提供值的指令
How to create a directive that provides values for ng-options?
我有选择元素在整个应用程序中具有相同的选项,但可能看起来有点不同,例如选择用户的生日(日,月,年)。
是否有一种方法来创建一个指令,将为ng-options
提供值/表达式?
。<select my-options-months></select>
,其中my-options-months
将使用ng-options
指令自动创建值为1..12
的选项
更新答案你的指令应该是这样的:
var myapp = angular.module('myapp', []);
myapp.controller('FirstCtrl', function ($scope) {
$scope.selectedMonth = 3
})
.directive('myOptionsMonths', function ($compile) {
return {
priority: 1001, // compiles first
terminal: true, // prevent lower priority directives to compile after it
compile: function (element, attrs) {
element.attr("ng-options", "m for m in months");
element.removeAttr('my-options-months'); // necessary to avoid infinite compile loop
var fn = $compile(element);
return function (scope) {
scope.months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
fn(scope);
};
}
}
})
请查看示例http://jsfiddle.net/KN9xx/39/
如果您打算在select中创建一个范围的值,只需将其放在模板中。如果这个范围必须是动态的,就把它链接到指令中的一个属性。
app.directive('myOptionsMonths', function(){
return {
scope: {
myOptionsMonths:"@"
},
link: function(scope,e, a){
var N = +a.myOptionsMonths;
scope.values = Array.apply(null, {length: N}).map(Number.call, Number);
},
template: "<select ng-model='t' ng-options='o for o in values'></select>"
};
});
<my-options-months my-options-months="10"></my-options-months>
演示:http://plnkr.co/edit/tL694zGr5tZJq5L4pwEA?p=preview
可以使用不同的方法使用过滤器,如:
.filter('range', function () {
return function (input, min, max, padding){
min = parseInt(min);
max = parseInt(max);
padding = padding ? padding : false;
for (var i=min; i<=max; i++){
input.push(padding ? ("00" + i).slice (-2) : i + '');
}
return input;
};
})
相关文章:
- 如何正确使用 ng-cloak 指令
- 为什么ng选项指令需要ng模型
- 如何为通过ng-view指令或ng-controller指令创建的每个新作用域设置侦听器
- ng-click指令没有调用整个函数
- AngularJS ng-if指令在移除元素之前,即使条件为false,也会短暂呈现
- 在表上使用 ng-repeat 指令
- Angularjs ng-options selected value of dropdownlist
- Angularjs ng-options 问题仅适用于 Chrome 浏览器
- 如何扩展 Angularjs ng-include 指令
- 在angularjs ng-repeat指令中对对象进行排序
- 如何从 Angular ng-repeat 指令中检索数组中的某些索引
- 使用Angular js ng repeat指令过滤json对象
- ng重复指令和$validators
- ng-csp指令的性能影响
- AngularJS中的data-ng-options指令
- 为什么没有为指令中的ng-options设置空白选项?
- AngularJS:带ng-options参数的指令下拉
- 如何在自定义指令中从ng-options中获得编译数组?
- Ng-options指令不起作用,无法在angularjs库中找到它
- 如何创建一个为ng-options提供值的指令