簡體   English   中英

用Java循環

[英]Looping with Javascript

我是編程新手。 您可以在下面的代碼中看到明顯的冗余。 我該如何用循環來編寫? 基本上只需要計數到8,然后將其加到變量名即可。 真的不能很好地掌握循環的手。

function TodoCtrl($scope) {
 $scope.funding = { startingEstimate: <?=$dataitem['incomeone'];?> };
 $scope.funding2 = { startingEstimate: <?=$dataitem['incometwo'];?> };
 $scope.funding3 = { startingEstimate: <?=$dataitem['incomethree'];?> };
 $scope.funding4 = { startingEstimate: <?=$dataitem['incomefour'];?> };
 $scope.funding5 = { startingEstimate: <?=$dataitem['incomefive'];?> };
 $scope.funding6 = { startingEstimate: <?=$dataitem['incomesix'];?> };
 $scope.funding7 = { startingEstimate: <?=$dataitem['incomeseven'];?> };
 $scope.funding8 = { startingEstimate: <?=$dataitem['incomeeight'];?> };
     computeNeeded = function() {
$scope.funding.total = 
($scope.funding.startingEstimate|0) + 
($scope.funding2.startingEstimate|0) +
($scope.funding3.startingEstimate|0) + 
($scope.funding4.startingEstimate|0) +
($scope.funding5.startingEstimate|0) + 
($scope.funding6.startingEstimate|0) +
($scope.funding7.startingEstimate|0) + 
($scope.funding8.startingEstimate|0);
};
$scope.$watch('funding.startingEstimate', computeNeeded);
$scope.$watch('funding2.startingEstimate', computeNeeded);
$scope.$watch('funding3.startingEstimate', computeNeeded);
$scope.$watch('funding4.startingEstimate', computeNeeded);
$scope.$watch('funding5.startingEstimate', computeNeeded);
$scope.$watch('funding6.startingEstimate', computeNeeded);
$scope.$watch('funding7.startingEstimate', computeNeeded);
$scope.$watch('funding8.startingEstimate', computeNeeded);
    } 

從您的PHP和$dataitem對象開始。 似乎那應該只是一個數組,讓索引處理數字而不是incomeoneincometwo等鍵。 然后,您可以簡單地使用PHP的json_encode函數將它們序列化為您的JavaScript可以使用的東西。 因此,在JavaScript頂部執行以下操作:

$scope.funding.startingEstimates = <?=json_encode($dataitem);?>;

...這將為您提供以下信息:

["100", "200", "300"]

現在,您可以輕松地進行迭代,但是對於您而言,您要做的就是對值求和。 您可以使用reduce()而不是循環來實現:

computeNeeded = function(){
  $scope.funding.total = $scope.funding.startingEstimates.reduce(
    function(a, b){
      return a + b;
    }
  );
}

您的$scope.$watch函數可以如下循環:

for(var i = 0; i < $scope.funding.startingEstimates.length; i++){
  $scope.$watch($scope.funding.startingEstimates[i], computeNeeded);
}

現在,您在原始PHP $dataitem數組中所做的任何更改都將由JavaScript接收,而無需進行任何額外的修改。 現在,在PHP中進行的任何更改都需要對JavaScript進行三處更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM