无法将数组传递给角度指令
Cannot pass array to angular directive
无法将数组传递给 Angular 中的输入掩码插件。也许有人可以帮助我解决这个问题。
angular.module('myproject.directives').
directive('inputMask', function() {
return {
restrict: 'A',
scope: {
inputMask: '@'
},
link: function(scope, el, attrs) {
$(el).inputmask(attrs.inputMask);
}
};
});
<input type="text" input-mask="{'mask': '9{4} 9{4} 9{4} 9{4}[9]', 'autoUnmask': 'true'}" />
属性值将返回一个字符串,而不是传递给插件所需的对象
您可以切换引号,使字符串是有效的 JSON,然后将 json 解析为对象
<input type="text" input-mask='{"mask": "9{4} 9{4} 9{4} 9{4}[9]", "autoUnmask": "true"}' />
.JS
.directive('inputMask', function() {
return {
restrict: 'A',
scope: {
inputMask: '@'
},
link: function(scope, el, attrs) {
var mask =JSON.parse(attrs.inputMask);
$(el).inputmask(mask);
}
};
})
但实际上,这要简单得多,而不是将字符串放在 html 中并将对象引用从控制器传递到隔离范围
只需使用scope.$eval
方法执行inputMask
属性中的表达式:
angular.module('myproject.directives')
.directive('inputMask', function() {
return {
restrict: 'A',
scope: {
inputMask: '@'
},
link: function(scope, el, attrs) {
$(el).inputmask(scope.$eval(attrs.inputMask));
}
};
});
<input type="text" input-mask="{'mask': '9{4} 9{4} 9{4} 9{4}[9]', 'autoUnmask': 'true'}" />
相关文章:
- 如何使用angular指令从html中获取数组
- 如何从 Angular ng-repeat 指令中检索数组中的某些索引
- 如何使用.指令跟踪ngModel数组项的行为
- 如何在angularjs中对指令内部的JSON数组使用过滤器
- 父数组中每个值的 Angular 指令保持同步
- AngularJs:迭代指令内的数组以创建嵌套的指令集
- 如何从自定义指令获取传递的属性并将它们收集到数组中以显示到模板中
- 创建 AngularJS 指令,如 ngModel 用于数组
- 在HandsonTable Angular指令中使用数组中的数据
- 从数组指令中删除重复项
- 角度JS并将复杂对象数组作为属性传递给指令
- AngularJS - 将多个 get 请求收集到 json 数组中,然后传递给指令
- 无法将数组传递给角度指令
- 使用指令器的数组
- 为 javascript 数组创建 angularjs 指令,将其转换为复选框列表
- 通过 Angular 指令在 html 模板中迭代配置数组
- 推送到数组不会通过ng repeat指令更新视图列表
- 从父指令或控制器中的指令名称数组呈现AngularJS指令
- 如何使用AngularJS ngShow指令仅在元素位于数组中时显示
- 在数组上重复的Angularjs指令