Javascript Angularjs表达式不适用于ng bind和{{}
Angularjs加法对绑定和{{}无效,但乘法有效。为什么? 我有下面显示的代码Javascript Angularjs表达式不适用于ng bind和{{},javascript,angularjs,Javascript,Angularjs,Angularjs加法对绑定和{{}无效,但乘法有效。为什么? 我有下面显示的代码 single_style.thread = 3; single_style.stiching = 5; 以及: 1){{single_style.thread+single_style.stiching} 2) {{single_style.thread*single_style.stiching} 1) 首先我得到的答案是35 2) 第二,我得到的答案是15 即使我用ng绑定它也不工作为什么 更新: 问题正
single_style.thread = 3;
single_style.stiching = 5;
以及:
1){{single_style.thread+single_style.stiching}
2) {{single_style.thread*single_style.stiching}
1) 首先我得到的答案是35
2) 第二,我得到的答案是15
即使我用ng绑定它也不工作为什么 更新: 问题正如所建议的那样,在进一步阅读下面这篇文章之后,您试图添加字符串,这导致了连接 上面说 Angular不使用JavaScript的eval()来计算表达式。相反,Angular的$parse服务处理这些表达式 角度表达式不能访问全局变量,如窗口、文档或位置。这一限制是有意的。它可以防止意外访问全局状态——这是一个常见的细微错误源 因此,我们不能在尖括号中使用
parseInt
,我们可以将计算移到javascript函数中,然后从尖括号中调用它。我的解决方案是,因为(*
)乘法运算符正在进行类型转换,所以只需将变量乘以1
,就可以得到相同的数字,并将数据类型转换为number
。然后,计算将按预期进行。请让我知道这是否解决了您的问题。html也将如此
<td>{{single_style.thread*1 + single_style.stiching*1}} </td>
我想我们在你的例子中遗漏了一些东西
+
运算符将字符串'3'
和'5'
在*
转换为int并进行乘法时连接起来。对于-
和/
[编辑]
在渲染数据之前修改数据:
$scope.all_value = [];
angular.forEach(data, function(item){
item.thread = parseFloat(item.thread);
item.measure = parseFloat(item.measure);
item.bulk_qty = parseFloat(item.bulk_qty);
item.price = parseFloat(item.price);
item.pack_charge = parseFloat(item.pack_charge);
item.label = parseFloat(item.label);
item.elastic = parseFloat(item.elastic);
item.button = parseFloat(item.button);
item.markt_price = parseFloat(item.markt_price);
item.stiching = parseFloat(item.stiching);
$scope.all_value.push(item);
})
工作示例
以及:
假设值定义为字符串时的情况: 以及: 解决方案 更好的方法是在控制器级别将字符串转换为int,例如:
$scope.single_style ={
thread: parseInt('3'),
stiching: parseInt('5')
};
对于parseInt,我得到的结果是加法空值,但乘法结果为NaN@Rijo你能分享一个突出问题的JSFIDLE吗?@Rijo更新了我的答案!回答很好,工作也很努力。我试着用不同的方法得到答案。但是没有得到谢谢你怎么得到35分?即使对于旧的Angularjs版本,它也应该可以工作:{{single_style.thread+single_style.stiching}{{single_style.thread*single_style.stiching}对于此场景值是无效的getting@Rijo请先修改演示。它抛出异常
$scope.all_value = [];
angular.forEach(data, function(item){
item.thread = parseFloat(item.thread);
item.measure = parseFloat(item.measure);
item.bulk_qty = parseFloat(item.bulk_qty);
item.price = parseFloat(item.price);
item.pack_charge = parseFloat(item.pack_charge);
item.label = parseFloat(item.label);
item.elastic = parseFloat(item.elastic);
item.button = parseFloat(item.button);
item.markt_price = parseFloat(item.markt_price);
item.stiching = parseFloat(item.stiching);
$scope.all_value.push(item);
})
$scope.single_style ={
thread: 3,
stiching: 5
};
<p>{{single_style.thread + single_style.stiching}} </p>
<p>{{single_style.thread * single_style.stiching}}</p>
8
15
$scope.single_style ={
thread: '3',
stiching: '5'
};
<p>{{single_style.thread + single_style.stiching}} </p>
<p>{{single_style.thread * single_style.stiching}}</p>
35
15
$scope.single_style ={
thread: parseInt('3'),
stiching: parseInt('5')
};