2014-10-01 86 views
-1

我在计算数组中的总数时遇到了麻烦。当一个新值被添加到数组中时,总数应该在视图上更新,但我得到一个未定义的错误。计算数组中的总数

var bowlingApp = angular.module('bowlingApp', []); 


//Add bowling points to score 
    bowlingApp.controller('bowlPoints', function ($scope){ 
    $scope.bowlPoints = [] 


    $scope.addBowlPoints = function() { 

     if ($scope.bowlPoints.length < 10) { 
      $scope.bowlPoints.push($scope.enteredPoints); 
     } 
     else { 
      alert("Thanks for playing"); 
     } 
    }; 

    $scope.total = function() { 
    var total = 0; 
    if (scope.bowlPoints < 300) { 

    for(var i=0; i < $scope.bowlPoints.length; i++) { 
     total += $scope.bowlPoints[i].amount; 
    } 
    return total; 

    }; 
    }; 
}); 
+0

什么类型的对象“enteredPoints”是?阵列?或单个对象,如{amount:...} – jevgenig 2014-10-01 14:16:02

+0

同意,如果'$ scope.enteredPoints'没有'amount'属性,那么'$ scope.bowlPoints [i] .amount'会给你错误。另外,什么是'$ scope.bowlPoints(null);'在做什么? – erdomke 2014-10-01 14:17:45

+0

'scope.bowlPoints'不应该是'$ scope.bowlPoints'? – Hacketo 2014-10-01 14:19:56

回答

0

什么是

if (scope.bowlPoints < 300) { 

是有可能得到这种间接方式值或数组的长度,不就可以加入。长度? 这里jsbin example ofcourse无棱角,只有javascript。 Mayby它可以帮助你;-)

1

如果您在Chrome控制台中单击错误消息,就像在Chrome中一样,您应该能够准确查看错误发生的位置。

未定义的错误通常是尝试访问本身未定义的对象的属性的结果。例如,erdomke说,如果$scope.enteredPoints没有财产数量,那么$scope.bowlPoints[i].amount会给你一个未定义的错误。

希望这会有所帮助。我真的推荐使用Web浏览器JavaScript控制台来调试你的代码,它会让事情变得更容易。