http://plnkr.co/edit/HN1PBGRsK6xqT9pwXcKY?p=previewそれはかなり自己説明する必要があります
ctrl.$formatters
モデル値を最初に設定したときに実行されますが、更新後は実行されません。
これによると、ビューが最初に作成されたときに $formatters が呼び出されますか? モデル値が変更されるたびに起動する必要がありますが、何が問題なのですか? ありがとう。
http://plnkr.co/edit/HN1PBGRsK6xqT9pwXcKY?p=previewそれはかなり自己説明する必要があります
ctrl.$formatters
モデル値を最初に設定したときに実行されますが、更新後は実行されません。
これによると、ビューが最初に作成されたときに $formatters が呼び出されますか? モデル値が変更されるたびに起動する必要がありますが、何が問題なのですか? ありがとう。
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;
}
});
}
}
});
これを正しく機能させるには、パーサーも必要です。