2015-12-11 73 views

回答

1

歡迎StackOverflow上 - 下一次請提供你自己寫一些代碼。在此期間 - 我寫你對你:-)

JS在你的控制器:

$scope.numbers = [1,2,3]; 
    $scope.getTotals = function(){ 
    var total = 0; 
total = $scope.numbers.reduce(function(prev, curr) { 
    return prev + curr; 
}); 
    return total; 
    } 

HTML:

<ul> 
<li ng-repeat="number in numbers"><input ng-model="number"></li> 
<li>{{getTotals()}}</li> 
</ul> 
+0

提問者應該確保他將你的html包含在ng-app和ng-controller指令中,等等。你的答案很好 - 但是我會使用angular.forEach而不是使用普通的JavaScript for循環 - 歡呼 – danday74

+0

甚至更​​好 - EcmaScript 5的Array.reduce方法是爲這個任務做的! – danday74

+0

切換到.reduce(),因爲@ danday74迫使我學習一些東西。 – itamar

3

雖然伊塔馬爾的回答工作沒有任何疑問,您可以寫這個樣這(在我看來有點清潔劑):

控制器

使用reduce總計算:

$scope.numbers = [1,2,3]; 

$scope.updateTotal = function() { 
    $scope.total = numbers.reduce(function (total, number) { 
     if (number) {   
      total += number; 
     } 

     return total; 
    }, 0); 
}; 

標記

<span>{{ total }}</span> 
<ul> 
    <li ng-repeat="number in numbers"> 
     <input type="number" ng-model="number" ng-change="updateTotal()"> 
    </li>  
</ul> 

既然你知道什麼時候總價值應該得到更新,更好的使用ng-change這裏,所以在需要時計算只是做。

在附註中,您可以在輸入中使用type="number",因此只能輸入數字。

+0

這不應該是您的回撥中的總數+ =數字嗎? – jtsnr

+0

是的,好趕上 – Komo

+0

幹得好,@Komo :-) – itamar