我有一个文字输入。它应该取一个数字并将其格式化为视图的货币,同时保持模型中的数值。我有文本输入本身和上/下按钮。
这就是我所拥有的:
if (angular.isDefined(ngModel)) {
ngModel.$formatters.push(function(value) {
var input;
if (isNaN(value)) {
return '';
} else {
value = format(value, formatStr);
input = elm.children().find('input');
return input.val(value);
}
});
}
它被调用,我从format
得到了正确的值。
我尝试使用$render
,$setViewModel
和其他我能想到的事情,但无济于事。任何人都有任何想法?
答案 0 :(得分:0)
这就是我最终做的事情:
app.directive('format', function(format) {
return {
restrict: 'A',
require: '?ngModel',
link: {
pre: function(scope, elm, attr, ngModel) {
var formatStr;
formatStr = attr.format;
if (angular.isDefined(ngModel)) {
ngModel.$formatters.push(function(value) {
if (angular.isNumber(value)) {
return value = format(value, formatStr);
}
});
ngModel.$parsers.unshift(function(value) {
if (isNaN(value)) {
value = ngModel.$modelValue;
}
return +value;
});
return elm.on('blur', function() {
if (isNaN(elm.val())) {
return elm.val(format(+ngModel.$modelValue, formatStr));
} else {
return elm.val(format(+elm.val(), formatStr));
}
});
}
}
}
};
});