【发布时间】:2016-10-21 17:35:51
【问题描述】:
我是 AngularJS 的新手,只是创建了一个简单的表单以便理解。我尝试将 2 个输入值相乘,这很好,但是当我使用相同的代码对这 2 个输入值求和时,它会被连接而不是求和。
我的代码:
<div ng-app ng-init="fval = 1;sval = 2">
<div>
First Value:
</div>
<div>
<input type="text" ng-model="fval" />
</div>
<br />
<div>
Second Value:
</div>
<div>
<input type="text" ng-model="sval" />
</div>
<br />
<div>
<label id="lblResult">{{fval * sval}}</label>
</div>
在这里,我为我的输入提供了硬编码值,最初我们将得到 6 的结果。此外,当我们更改输入时,我们将得到乘以 2 个值的正确结果。
我更改了我的添加代码如下:
<label id="lblResult">{{fval + sval}}</label>
运行应用程序后,我得到了正确的值 3,但是当我更改输入值时,我得到了连接的值。 就像如果我更改我的文本框值,对于 firstTextBox = 12 & secondTextBox = 3,那么我得到的结果值为 '123'。
因此,当我第一次运行应用程序时,我以正确的值登陆,但在客户端更改输入是串联的。
对不起我的英语,因为它不是我的第一语言。谁能帮我解决我哪里出错了。
【问题讨论】:
-
如果您真的想做数学运算,请将输入控件的类型更改为数字。
-
这就是 javascript 的工作方式 :) 乘法不适用于字符串,然后它会尝试变得聪明并将字符串用作数字
-
它确实适用于乘法,因为
*是一个纯粹的数学运算符。因此,您的字符串输入会自动解析为数字。然而,由于+是一个数学运算,以及字符串连接运算符,当两个参数之一为字符串类型时,它就像字符串连接一样工作。 -
但是请注意,这不是角度表达式的典型应用,因为您通常会在控制器内部执行逻辑然后绑定到它。
-
@NnN 另一种解决方法可能是
{{fval * 1 + sval * 1}},因为 1 的操作会将字符串转换为数字(仅供参考)
标签: javascript angularjs