我正在使用一些自定义指令从JSON生成HTML表单。 JSON的一部分包括对字段值的限制。
JSON对字段的限制之一是正十进制类型。我在链接函数中使用的代码来完成此任务:
//...snip
if (<this field should be number>) {
elem.attr("type", "number");
}
这会成功将字段类型更改为number
。但是,有两个问题:
Error: [ngModel:numfmt] 1 to be a number
Error: [ngModel:numfmt] Expected 12 to be a number
Error: [ngModel:numfmt] Expected 123 to be a number
我知道该模型已成功更改为数字类型,因为当我使用指令将其打印出来时,它会显示没有引号。
所以我的问题是:
答案 0 :(得分:0)
The type of an input
element can be changed dynamically simply with AngularJS interpolation.
<input type="{{dynamicType}}" ng-model="inputValue">
Or from a directive
angular.module("myApp").directive("typeVar", function() {
return {
link: linkFn
};
function linkFn(scope,elem,attrs) {
//elem.attr("type", "number");
attrs.$observe("typeVar", function(value) {
elem.attr("type", value);
//attrs.$set("type", value);
});
}
});
HTML
<input type-var="{{dynamicType}}" ng-model="inputValue">
The DEMO on JSFiddle
The type
property is an intrinsic part of the input
element. For more information, see MDN HTML Element Reference -- input.