http://plnkr.co/edit/HN1PBGRsK6xqT9pwXcKY?p=preview它应该是非常自我解释
ctrl.$formatters
在我最初设置模型值时运行,但在我更新之后不会运行。
根据这个Have $formatters be called when view is first populated?,它应该在每次模型值发生变化时触发,那么有什么不对?感谢。
答案 0 :(得分:2)
使用自然模型设定器scope[attrs.ngModel]
代替setviewvalue。
app.directive('format', function($filter) {
return {
require: 'ngModel',
link: function(scope, element, attrs, ctrl) {
element.unbind('input').unbind('keydown').unbind('change');
element.bind('blur', function() {
if (element.val()) {
scope.$apply(function() {
scope[attrs.ngModel] = element.val();
});
}
});
ctrl.$formatters.unshift(function(modelValue) {
if (modelValue) {
var formatted = $filter('currency')(modelValue);
return formatted;
}
});
}
}
});
您还需要一个解析器才能正常工作。