在我的页面中,我使用页面控制器中的变量。例如:
<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;),那么它就可以工作。
有什么想法吗?
答案 0 :(得分:3)
使用ng-value="cpc.projektid"
代替value
属性。
直到页面中没有加载Angular,value
属性中的浏览器会显示{{cpc.projektid}}
这就是为什么它会抱怨。 ng-value
确保仅在表达式正确编译后才添加value
属性。
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;