如何将文本类型输入转换为数字?

时间:2016-10-26 09:49:34

标签: angularjs

我对过滤器感到困惑。

我们可以将过滤器属性用作{{ num | number }}

为什么我们不能这样使用?

<input type="text" name="name" ng-model="num" />
<input type="number" name="name" ng-model="num | number" />

如果我的做法错了。如何将文字类型输入转换为数字

1 个答案:

答案 0 :(得分:0)

你不能在ng-model中使用过滤器,因为ng-model是双向绑定而filter只允许输出所以如果使用过滤器,那么ng-model不能绑定新值,所以你必须在你的控制器中调用filter。文本值更改为ex。类似下面的内容

<input type="text" name="name" ng-model="num" />
<input type="number" name="name" ng-model="numFormatted" />

考虑两个输入的ng-model不同,numFormatted将在带有过滤器的控制器中进行操作

控制器中的

function yourController($scope,$filter)
{
  $scope.$watch('num', function(newValue) {
     $scope.numFormatted = $filter('number')(newValue); // here we convert changed value of num to number using filter
  });

  $scope.num = "1";
}

所以现在每当使用输入类型改变num model =&#34; text&#34;它会将其转换为数字并分配给numFormatted,因此输入=&#34; number&#34;将会更新。