Javascript Angularjs表达式不适用于ng bind和{{}

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绑定它也不工作为什么 更新: 问题正

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绑定它也不工作为什么

更新:

问题正如所建议的那样,在进一步阅读下面这篇文章之后,您试图添加字符串,这导致了连接

上面说

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')
};