如何编写一个AngularJS指令来格式化模型值
How to write an AngularJS directive that formats the model value?
我正试图编写一个指令,让<input>
元素接受使用,
而不是.
作为分隔符的浮点数。
我采用了文档中的示例,该示例通过向controller.$parsers
添加一个新的解析器来解析用户输入以接受.
和,
作为分隔符。
然而,我现在想要10.5
显示为10,5
(这不是目前的情况,如果我在我的模型中使用JS设置值)。
那么在指令中我可以添加一个"formatter"函数吗?(就像我可以添加一个"解析器"函数)
指令如下:
app.directive('inputFloat', function () {
var FLOAT_REGEXP = /^'-?'d+(('.|',)'d+)?$/;
return {
require: 'ngModel',
link: function (scope, element, attrs, controller) {
controller.$parsers.unshift(function (viewValue) {
if (FLOAT_REGEXP.test(viewValue)) {
controller.$setValidity('float', true);
if (typeof viewValue === "number") {
return viewValue;
} else {
return parseFloat(viewValue.replace(',', '.'));
}
} else {
controller.$setValidity('float', false);
return undefined;
}
});
}
};
});
在模板中的用法如下:
<input input-float type="text" ng-model="input.value.digitalValue">
您可以使用controller.$formatters
。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 参数变量出现ngTable指令问题
- jQuery中是否内置了任何字符串格式化函数
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 使用每次都不同的transclude重复指令
- 打开一个模态并将其链接到AngularJS中的指令
- 从html创建一个指令,该指令按类名应用函数
- 将JSON对象传递给angular指令
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- JavaScript指令不能像我想象的那样工作
- Angular.js指令格式化程序只调用过一次,或者如何告诉ngModel表现得像watchCollection
- 指令中的 AngularJS 自定义过滤器以格式化值
- 嵌套指令中的 AngularJS 格式化程序
- 如何使用 AngularJS ui-date 指令格式化初始日期值
- 如何在自定义指令中使用ngModel的格式化器/解析器
- 在API调用后格式化的AngularJS指令
- 如何编写一个AngularJS指令来格式化模型值
- AngularJS指令来格式化模型值以供显示,但在模型中保留实际值
- 角度输入格式化器/解析器指令和插值属性
- 格式化AngularJS指令模板的方法