首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有数字的离子+变量总是“不是一个有效的数字”

带有数字的离子+变量总是“不是一个有效的数字”
EN

Stack Overflow用户
提问于 2016-07-22 13:45:20
回答 1查看 421关注 0票数 1

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

代码语言:javascript
复制
<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数据库获得一些数据。如果我检查控制器或工厂中变量的类型,例如:

代码语言:javascript
复制
console.log(typeof cpcVm.projektid); => number
console.log(angular.isNumber(cpcVm.projektid)); 0> true

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

但我总是得到警告:

指定的值“{{cpc.projektid}”不是有效数字。该值必须与以下正则表达式匹配:-?(\d+|\d+.\d+|.\d+)(eE?\d+)?“

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

代码语言:javascript
复制
<input type="number" placeholder="0" value="{{cpc.luftmenge | number:2}}" disabled>

我已经尝试在我的控制器和工厂中提供一个额外的parseFloat(),但是没有改变。控制器和工厂说它是一个数字,但是在HTML中它会产生一个错误,我不能使用过滤器。

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

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-22 13:55:08

使用ng-value="cpc.projektid"而不是value属性。

在页面中没有加载角之前,浏览器将在value属性中看到的是{{cpc.projektid}},这就是它抱怨的原因。ng-value确保只有在表达式正确编译后才会添加value属性。

代码语言:javascript
复制
var app = angular.module("sa", []);

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

  $scope.projektid = "2"
});
代码语言:javascript
复制
<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>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38528083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档