离子+带数字的变量产生的总是'不是有效的数字'

时间:2016-07-22 13:45:21

标签: html angularjs ionic-framework

在我的页面中,我使用页面控制器中的变量。例如:

<label class="item item-input item-stacked-label">
  <span class="input-label">Projekt Id:</span>
  <input type="number" placeholder="0" value="{{cpc.projektid}}" disabled>
</label>

控制器对工厂进行一些计算,并从SQLite数据库中获取一些数据。如果我在控制器或工厂中检查我的变量类型,我会得到示例:

console.log(typeof cpcVm.projektid); => number
console.log(angular.isNumber(cpcVm.projektid)); 0> true

对我来说,这意味着,变量的值是一个数字!?

但我总是得到警告:

  

指定值&#34; {{cpc.projektid}}&#34;不是有效的数字。该   value必须与以下正则表达式匹配:    - (\ d + | \ d + \ d + | \ d +。)([EE] [ - +] \ d +?)&#34;

对于projektid这不是一个大问题,但我有更复杂的计算,我还需要设置一些过滤器,仅当数字是数字时才有效。例如:

<input type="number" placeholder="0" value="{{cpc.luftmenge | number:2}}" disabled>

我已经尝试在我的控制器和工厂中增加parseFloat(),但没有变化。控制器和工厂说它是一个数字,但在HTML中它会产生错误,我无法使用过滤器。

另一件奇怪的事情:如果我手动设置工厂或控制器中的变量值(例如返回12;),那么它就可以工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

使用ng-value="cpc.projektid"代替value属性。

直到页面中没有加载Angular,value属性中的浏览器会显示{{cpc.projektid}}这就是为什么它会抱怨。 ng-value确保仅在表达式正确编译后才添加value属性。

&#13;
&#13;
var app = angular.module("sa", []);

app.controller("FooController", function($scope) {

  $scope.projektid = "2"
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="sa" ng-controller="FooController">
  Projekt Id:
  <input type="number" placeholder="0" ng-value="projektid" disabled>
</div>
&#13;
&#13;
&#13;