【发布时间】:2014-09-04 05:47:48
【问题描述】:
使用 ngModel.$formatters 和 ngModel.$parsers 我正在尝试创建一个指令来将数据类型从模型更改为视图,反之亦然。
问题是当我使用<input type="number">
在这种情况下,toView 接收“未定义”作为值,但不接收字符串数据。 ("1234")
如果我删除 type=number 可以正常工作,但输入元素不是我想要的。
有什么方法可以让它工作吗?
如果没有,还有其他方法可以达到这个目的吗? (模型必须是字符串,输入必须是 type="number")
javascript
var app = angular.module('module', []);
app.controller('MainCtrl', function($scope) {
$scope.model = {};
$scope.model.number = "1234";
});
app.directive('numberConverter', function() {
return {
restrict: 'A',
require: 'ngModel',
link: {
pre: function(scope, element, attr, ngModel) {
function toModel(value) {
return "" + value; // convert to string
}
function toView(value) {
return parseInt(value); // convert to number
}
ngModel.$formatters.unshift(toView);
ngModel.$parsers.unshift(toModel);
},
post: function() {}
}
};
});
html
<input type="number" number-converter ng-model="model.number">
【问题讨论】:
标签: angularjs angularjs-directive type-conversion