是否可以在ng-change中包含过滤器?

时间:2014-03-08 18:07:44

标签: angularjs angularjs-filter angularjs-ng-change

我有一个ng-change,根据输入到另一个输入的文本更新文本输入 - https://stackoverflow.com/questions/22256174/angularjs-want-to-show-1-x-in-a-text-input-when-the-users-sets-a-value-0

但是,使用ng-change设置的值只能以0.01的步长显示。也就是两位小数。但是由于Chrome没有“修复”浮点舍入错误显示,有时文本输入显示值为0.19999999996。

我认为AngularJS数字过滤器可能有用,但在ng-change中添加它对我不起作用 -

ng-change="v1 = 1 - v2 | number:2"

是否有可能让它发挥作用?......还是有其他一些解决方法?

1 个答案:

答案 0 :(得分:3)

您可以在控制器中使用$filter服务:

$filter('number')(number, fractionSize)

例如:

app.controller('MyCtrl', ['$scope', '$filter',
  function MyCtrl($scope, $filter) {

    $scope.change = function() {
      $scope.v1 = $filter('number')(1 - $scope.v2, 2);
    };
  }
]);

<body ng-controller="MyCtrl">
  <input ng-model="v2" ng-change="change()" />
  <input ng-model="v1" />
</body>

演示: http://plnkr.co/edit/lUVyAL8nuCPKM66I7J0W?p=preview

更新了演示: http://plnkr.co/edit/f8UZQY3d4YF4LFd3FvoF?p=preview