입력란에 텍스트 앞에 $
을 추가하는 currency
이라는 지정 문을 만들려고합니다. 달러 기호는 항상 표시되어야하며 제거 할 수 없어야합니다.
app.directive('currency', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, elem, attrs, controller) {
// view -> model
controller.$parsers.push(function (viewValue) {
viewValue = viewValue.replace(/^\$/, '');
controller.$viewValue = viewValue;
return viewValue;
});
// model -> view
controller.$formatters.push(function (modelValue) {
modelValue = '$' + modelValue;
controller.$modelValue = modelValue;
return modelValue;
});
}
};
});
근무 예 :
여기 내 코드입니다 당신이 볼 수 있듯이, 달러 기호가 처음에 추가됩니다 https://jsfiddle.net/U3pVM/29012/
, 삭제 할 수 있으며, 그 이후 추가되지 않습니다. $formatters
에 푸시하는 기능은 한 번만 호출되는 것 같습니다. 그런 식으로 일할 것인가, 아니면 내가 놓친 것이 있습니까? 원하는 동작을 어떻게 구현할 수 있습니까?
가능한 동일한 문제가 링크 기능은 당신에게 무슨 뜻인지 어떤 표시를 제공하기 위해
편집
하면 다음 코드 예제를 참조하십시오 : http://stackoverflow.com/questions/19094150/using-angularjs-directive-to-format-input-field-while-leaving-scope-variable-unc –
입력란에 입력하면 $ 파서가 아닌 $ 포매터. 동일한 ngModel을 조작하는 두 번째 입력 필드를 추가하여이를 테스트 할 수 있습니다. 예 : https://jsfiddle.net/U3pVM/29013/ –
뷰에서 모델을 변경하면 포맷터가 호출되지 않습니다 – gaurav5430