javascript - ngModel $格式化程序不工作

标签 javascript angularjs angularjs-ng-model

我是 Angular 的新手。在这个简单的例子中,我期望有两种行为:

  • 用 5.00 代替 5 初始化输入。

  • 点击减号和加号按钮,设置小数点后两位小数的格式。

Plunker

没有任何效果,但我没有弄清楚问题所在。

这里使用指令

<number-input ng-model="number"></number-input>

指令在这里

var app = angular.module('myApp', []);
app.controller('MainCtrl', function($scope) {
  $scope.number = 5;
});

app.directive('numberInput', ['$filter',function ($filter){
  return {
    require: 'ngModel',
    restrict: 'AE',
    template: '<input type="number" ng-model="number"/>
    <button type="button" ng-click="increment()">+</button>
    <button type="button" ng-click="decrement()">-</button>',
    link: function(scope, element, attrs, ngModelCtrl) {

      var input = element.find('input');

      ngModelCtrl.$render = function() {
      };

      scope.increment = function() {
        updateValue(+1);
      };

      scope.decrement = function() {
        updateValue(-1);
      }; 

      function updateValue(value) {
        ngModelCtrl.$setViewValue(ngModelCtrl.$modelValue + value); 
        ngModelCtrl.$render();
      }

      ngModelCtrl.$parsers.push(function(value) {
        return parseFloat(value);
      });

      ngModelCtrl.$formatters.push(function (value) {
        return $filter('number')(value, 2);
      });

    }
  };

}]);

最佳答案

您向错误的 ngModel Controller 添加了解析器和格式化程序。关键是在这个例子中你有两个 ngModel Controller ,一个在指令上,一个在输入上,它们使用相同的模型。

为了格式化输入中的值,需要在输入的 ngModel Controller 上添加格式化程序。

var inputModelCtrl = element.find('input').controller('ngModel');

另一件错误的事情是输入的类型是数字而不是文本。您可以检查更新的 Plunker here .

关于javascript - ngModel $格式化程序不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32668303/

相关文章:

javascript - 自动完成 jquery 建议不起作用

angularjs - 当 Angular 由于数据更改而完成更新布局时如何调用函数

javascript - AngularJS Form 和 $scope 不互相更新

javascript - 为什么我的部分标签与我的 div 容器重叠?我正在尝试退出主页下的部分

javascript - CodeIgniter 中的图像文件、CSS 和 JS 文件

javascript - NestJS + TypeORM - 连接到 mysql 和 mongodb 时出错

javascript - ngClass AND 条件表达式

javascript - 方法前的方括号

javascript - AngularJS:在 ng-model 上搜索多个值

javascript - angularjs - 级联选择使用第一个选择中的模型数据