在输入中为模型和视图分隔值

时间:2014-11-17 19:47:55

标签: angularjs angularjs-directive

我想要做的就是将我输入的数字自动格式化为$,因为我在输入中键入它,但保持实际模型只作为数字而不用$。我尝试了不同的方法,但我现在拥有的只是如果我已经在模型中有一些值(而不是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};
});

由于

1 个答案:

答案 0 :(得分:1)

您是否尝试使用过滤器?

<input ng-model="num">
    <p>Value {{num | currency:"$"}}</p>
</body>

https://docs.angularjs.org/api/ng/filter/currency