我想要做的就是将我输入的数字自动格式化为$,因为我在输入中键入它,但保持实际模型只作为数字而不用$。我尝试了不同的方法,但我现在拥有的只是如果我已经在模型中有一些值(而不是null)它将显示为$。但是如果它为null或者我删除了输入中的所有内容并从头开始,则值不会被格式化为$。我究竟做错了什么? 这是一个jsfiddle
http://jsfiddle.net/rmzqomzz/1/
angular.module('HelloApp', []);
function myTest() {
return {
restrict: 'EA',
require: 'ngModel',
link: function(scope, element, iAttrs, ngModel) {
console.log(iAttrs.myTest);
ngModel.$formatters.push(function(modelValue){
if(!modelValue) return;
if(iAttrs.myTest == 'money'){
return '$ '+modelValue;
}else{
return modelValue +' %';
}
});
ngModel.$parsers.push(function(viewValue){
return viewValue.replace('$', '').trim();
});
scope.$watch(
function(){
return ngModel.$modelValue;
}, function(newValue, oldValue){
console.log('value changed '+ newValue);
}, true
);
}
};
};
angular.module('HelloApp').directive('myTest', myTest);
angular.module('HelloApp').controller('HelloController', function($scope) {
$scope.mon = {'balu':null};
});
由于
答案 0 :(得分:1)
您是否尝试使用过滤器?
<input ng-model="num">
<p>Value {{num | currency:"$"}}</p>
</body>