首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angularjs:即使在我将变量解析为整数之后,也要添加整数

Angularjs:即使在我将变量解析为整数之后,也要添加整数
EN

Stack Overflow用户
提问于 2013-10-30 16:30:43
回答 1查看 5.2K关注 0票数 3

我在将两个数字相加时真的有一个奇怪的问题。

这是我的代码,在第一个控制器中一切正常,但是在第二个控制器中,如果我加上10而不是0,输出就完全奇怪了

下面是html代码

代码语言:javascript
复制
<div ng-app="">
<div ng-controller="Controller1">
    <br/>**** Controller-1
    <br/>Add 0 : {{update1(0)}}
    <br/>Add 10 : {{update1(10)}}
    <br/>Add 50 : {{update1(50)}}
    <br/>Add -60 : {{update1(-60)}}</div>
<div ng-controller="Controller2">
    <br/>**** Controller-2
    <br/>Add 10 : {{update2(10)}}
    <br/>Add 10 : {{update2(10)}}
    <br/>Add 50 : {{update2(50)}}
    <br/>Add -60 : {{update2(-60)}}</div>
</div>

这是我的javascript

代码语言:javascript
复制
function Controller1($scope) {
var x = 0;
$scope.update1 = function (smValue) {
    x += parseInt(smValue);
    return x;
}
}

function Controller2($scope) {
var y = 0;
$scope.update2 = function (smValue) {
    y += parseInt(smValue);
    return y;
}
}

这是输出

代码语言:javascript
复制
**** Controller-1 
Add 0 : 0 
Add 10 : 10 
Add 50 : 60 
Add -60 : 0

**** Controller-2 
Add 0 : 110 
Add 10 : 120 
Add 50 : 170 
Add -60 : 110

这是可以尝试的链接:http://jsfiddle.net/6VqqN/

有人能给我解释一下为什么会这样吗?即使我添加一个3位或4位数字,输出也与我预期的完全不同。

EN

回答 1

Stack Overflow用户

发布于 2013-10-30 17:37:42

当您绑定到AngularJS中的函数时,每当函数中使用的变量之一发生更改时,它都会重新计算函数。

由于update1和update2更改了$scope.x,因此它会在无限循环中一次又一次地重新计算函数,因为在这些函数中使用了$scope.x。

现在,为什么它不在Controller1中发生呢?是的,你看不到它,因为在Controller1中的每个循环结束时,$scope.x的值被返回到0 (0 + 10 + 50 - 60 = 0),所以无论你在这些函数中循环多少次,$scope.x总是等于相同的值。

在controller2中,每次循环结束时$scope.x的值为10 (0 + 10 + 10 + 50 - 60 = 10),因此$scope.x的值会在每次循环后增加10。所以,如果有一个无限循环,为什么我的浏览器不冻结,仍然在controller2上显示一些值呢?因为AngularJS在10次迭代后停止$digest循环(这就是为什么$scope.x在最后一次迭代开始时等于10 ($scope.x在每次迭代后增加10,因此10 * 10 = 100)。

此外,parseInt也是多余的,因为您传递的变量已经是一个整数。

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

https://stackoverflow.com/questions/19677265

复制
相关文章

相似问题

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