2014-09-18 60 views
0

我正在使用角度,我无法让我的柜台工作。 我有这样的功能:如何在返回之前递增计数器而不传递回调函数?

$scope.statClass = function(summoner, key) { 
    var stat = 'stat-same'; 
    if(shouldRevert(key)) { 
    summoner === 1 ? summoner = 2 : summoner = 1; 
    } 
    if(summoner === 1) { 
    if($scope.champData1[key] > $scope.champData2[key]) { 
     $scope.score1++; 
     stat = 'stat-bigger'; 
    } else if ($scope.champData1[key] < $scope.champData2[key]) { 
     stat = 'stat-lower'; 
    } 
    } else if(summoner === 2) { 
    if($scope.champData2[key] > $scope.champData1[key]) { 
     $scope.score2++; 
     stat = 'stat-bigger'; 
    } else if ($scope.champData2[key] < $scope.champData1[key]) { 
     stat = 'stat-lower'; 
    } 
    } 
    return stat; 
}; 

,当我试图确定类格式化某种“格”块运行。 每次加载我的页面并显示{{score1}}或{{score2}}时,它将显示为'null'。 如何在返回统计之前增加分数值?

PS:我宣布$ scope.score1和2之外的功能。

+1

我不认为这是显而易见从这个片段,为什么你的计数器不工作。你是否将'score1'和'score2'初始化为'0'? – Pete 2014-09-18 16:49:18

+1

这可能是一个范围问题。 – 2014-09-18 17:00:17

回答

0

每当绑定到该控制器的元素进入DOM时,都会创建控制器的新实例。控制器的每个实例都有唯一的计数器。

如果“每次我的网页加载”:

  1. 你的意思是浏览器刷新整个页面,不这样做,:-),棱角分明是“单页应用程序的。没有数据从一个负载传送到下一个负载。
  2. 你的意思是一条新的路线被加载,这是预期的。使用服务和/或$ broadcast/$ emit + $ on使计数器保持同步
  3. DOM元素通过ng-if或ng-switch变得可见:这些元素被取出并重新插入到DOM创建一个新的控制器(如果控制器位于/在ng-if'd元素之下)。改为使用ng-show/ng-hide。这些更改显示属性,但保留DOM中的元素。