gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:41:19 25 4
gpt4 key购买 nike

Angularjs 加法对 ng-bind 和 {{ }} 无效,但乘法有效,为什么?我有如下所示的代码

single_style.thread = 3;
single_style.stiching = 5;

和:

1) <td>{{single_style.thread + single_style.stiching}} </td>
2) <td>{{single_style.thread * single_style.stiching}}</td>

1) 首先我得到的答案是 35

2) 其次我得到的答案是 15

即使我使用 ng-bind 也无法正常工作,为什么?

最佳答案

更新:

问题正如所建议的那样,您试图添加导致连接的字符串,在进一步阅读和下面显示的这篇很棒的 SO 帖子之后。

SO Answer

Angular does not use JavaScript's eval() to evaluate expressions. Instead Angular's $parse service processes these expressions.

Angular 表达式无法访问全局变量,例如 window、document 或 location。这种限制是有意的。它可以防止意外访问全局状态——这是细微错误的常见来源。

所以我们不能在尖括号中使用 parseInt,我们可以将计算移到 javascript 函数中并从尖括号中调用它。我的解决方案是,由于 (*) 乘法运算符正在进行类型转换,只需将变量乘以 1 即可得到相同的数字并将数据类型转换为 编号。然后计算将按预期进行。如果这能解决您的问题,请告诉我。 html 将如此。

<td>{{single_style.thread*1 + single_style.stiching*1}} </td>

Plunkr Demo

我认为在您的场景中,变量是字符串。 + 以两种方式工作,作为数字的加法运算符和字符串的连接运算符,所以在你的问题中,第一种情况,运算符作为连接器工作并附加 3 535,对于您的第二种情况,我认为乘法运算符 (*) 正在执行 类型转换 在执行操作之前进行正确的计算 (15),而在第一种情况下类型转换没有发生!

<td>{{parseInt(single_style.thread) + parseInt(single_style.stiching)}} </td>
<td>{{parseInt(single_style.thread) * parseInt(single_style.stiching)}}</td>

关于javascript - Angularjs 表达式不适用于 ng-bind 和 {{ }},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46130462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com