角度误差:模型不是“数字”类型

时间:2015-09-04 18:27:58

标签: angularjs

在我的应用程序中,我收到错误:

  

角度错误:ngModel:numfmt模型的类型不是number

HTML:

<input ng-model="price" type="number" name="price" placeholder="enter price" id="price" />

在我的控制器中,我尝试用这个来解决问题。但我没有运气。

$scope.$watch('price', function (val, old) {
    $scope.value = parseInt(val);
});

如何捕获或缓解此问题?

如果您需要更多详细信息,请随时提出

4 个答案:

答案 0 :(得分:11)

您应该使用stringToNumber指令来解决此错误。 number输入指令<input type="number">要求模型为number。要将数字存储为字符串,您应该使用stringToNumber指令将其转换为input[number]指令所期望的格式。请查看下面的代码段。

<input ng-model="price" string-to-number type="number" name="price" placeholder="enter price" id="price" />

这是指令(来自here):

.directive('stringToNumber', function() {
  return {
    require: 'ngModel',
    link: function(scope, element, attrs, ngModel) {
      ngModel.$parsers.push(function(value) {
        return '' + value;
      });
      ngModel.$formatters.push(function(value) {
        return parseFloat(value, 10);
      });
    }
  };
});

答案 1 :(得分:0)

<input .... />

我发现角度对它接受的输入很挑剔。我发现了一些困难的方法,花了一些时间调试我写的东西,我通过记事本++ XML格式化器来完美地布置,以验证没有不匹配的标签。

格式化程序已替换

<script .....></script>

带有自闭标签

<script ...../>

格式化程序在我的HTML中创建的XML样式自关闭标记阻止了角度无法正确解释我的文件。

某些标签,例如&lt; BR&gt;,&lt; meta&gt;和(我认为)&lt; input&gt;不需要关门。我不知道这是不是你的问题,但在调查任何问题之前,我肯定会编辑该文件以删除你自我关闭的输入标签。

答案 2 :(得分:0)

你可以创建一个stringToNumber指令来解析字符串到数字,这个完美的例子显示在下面的链接:https://docs.angularjs.org/error/ngModel/numfmt

答案 3 :(得分:0)

this.variable = isNaN(defaultValue.value)? defaultValue.value:parseInt(defaultValue.value);