增量时角js中的奇怪行为

时间:2014-08-07 09:12:09

标签: angularjs

考虑一下这个傻瓜:

http://plnkr.co/edit/iEU0gZQTtj22Eo2Ncr92?p=preview

//controller
    $scope.count =0; 
     $scope.add = function(){
       $scope.count++;
     };

我想要实现的就是:

每当我的html遇到$ scope.add函数时,都会增加1。

出于某种原因,它增加了10,任何原因?

2 个答案:

答案 0 :(得分:0)

您正在初始化范围之外的计数并调用添加两次。我在范围内定义了count并得到了结果。 看看这个

[1]: http://plnkr.co/edit/3NQye0axRwdpsl2kf4lq?p=preview

是的,这是一种奇怪的行为,但你可以通过点击等触发事件来实现这一点。或者ng-init并调用你的函数。看一看。我不知道这会做你的工作还是不看。谢谢。
                 updated link

答案 1 :(得分:-1)

我的样本不是一个好的解决方案,但它有效。您的问题是由于错误:$ rootScope:infdig Infinite $ digest Loop。您可以查看here中的详细信息。

但如果你真的想,请查看这个jsfiddle http://jsfiddle.net/meazuri/oqznnjrd/1/。 这是控制器

var myApp = angular.module('myApp',[],function($rootScopeProvider) {
  $rootScopeProvider.digestTtl(0);
});
function MyCtrl($scope) {


    $scope.myInit = function(){
         $rootScopeProvider.digestTtl(1);
    }
    $scope.name = 'Superhero';
    $scope.count =0;
    $scope.added = function(){   
        $scope.count += 1;
    }
}

这是html文件

   <div ng-controller="MyCtrl">


            {{count}}
            {{added()}}
            {{count}}
            {{added()}}
            {{count}}
    </div>

我是通过将$ digest迭代次数设置为0来创建的。

digestTtl(极限); 设置范围在放弃之前应尝试执行的$ digest迭代次数,并假设模型不稳定。

当前默认值是10次迭代。