2016-03-22 11 views
0

に示し、これは私が私のAngularJSビュー(オランダ語)で公開したいいくつかのデータであると仮定します計算子オブジェクトの値と親

$scope.data = 
    [ 
     { 
      name: "actief", 
      value: null, 
      children: 
      [ 
       { 
        name: "vast actief", 
        value: [20, 30, 40, 50], 
        children: null 
       }, 
       { 
        name: "vlottend actief", 
        value: [215, 230, 245, 500], 
        children: null 
       }, 
       { 
        name: "bewegend actief", 
        value: [134, 135, 136, 137], 
        children: null 
       } 
      ] 
     }, 
     { 
      name: "stilstaand", 
      value: null, 
      children: 
      [ 
       { 
        name: "vast stilstaand", 
        value: [2000, 3000, 4000, 5000], 
        children: null 
       }, 
       { 
        name: "vlottend stilstaand", 
        value: [2150, 2300, 2450, 5000], 
        children: null 
       }, 
       { 
        name: "bewegend stilstaand", 
        value: [1340, 1350, 1360, 1370], 
        children: null 
       } 
      ] 
     } 
    ]; 

私の見解でリストにこのオブジェクトを公開するには、私が行うことができますこのような何か:

<ul ng-repeat="item in data"> 
    <li>{{item.name}}</li> 
    <ul ng-repeat="child in item.children"> 
     <li>{{ child.name }}</li> 
     <ul ng-repeat="value in child.value"> 
      <li>{{ value }}</li> 
     </ul> 
    </ul> 
</ul> 

私は私の親オブジェクト{{ item name }}は子供の合計などの配列を持つようにしたいです最初の親は、この配列だろう:私は(コントローラにはロジック私は知っているが、それはただのテストのためです)私のコントローラの内部でこの計算を行うことを試みない[369, 395, 421, 687]

for (var i = 0; i < $scope.data.length; i++){ 
    $scope.data[i].value = []; 
    for (var j = 0; j < $scope.data[i].children.length; j++) { 
     if ($scope.data[i].children[j].value.length > 0) { 
      for (var k = 0; k < $scope.data[i].children[j].value.length; k++) { 
       console.log(typeof $scope.data[i].children[j].value[k]); // says number! 
       $scope.data[i].value[k] += $scope.data[i].children[j].value[k]; // But my array is NAN??? 
      } 
     } 
    } 
} 

私の4箇所があります。親の値配列ですが、それらのうちのどれもNaNですが、何が間違っていますか?

サイド質問

私は私の見解でループをやっているので、そこに配列位置の合計を計算するために短い方法はありませんか?

答えて

0

この構文

$scope.data[i].value[k] += ... // some value 

値をインクリメントする配列のk位置にすでに存在していることを前提としています。

コードでは、配列は最初は空です。何が起こっていることは、このようなものである。この問題を解決するための

var myArray = []; 
myArray[0] += 1; // error: there is no element at the 0 position! 

一つの方法は、ゼロ値に空の配列を初期化することです:

$scope.data[i].value = [0, 0, 0, 0]; // you can also seed the initial zeroes using a loop 
+0

あなたはその程度か?なぜなら、私が 'var myArray = []; myArray + = 5'私はちょうど '5'を得ます。しかし、私は 'var myArray = []; myArray + = 5; myArray + = 10''は '510'になります。私が見ているのは、数字を数えず、連想させるということです。 – Peter

+1

質問を理解してから、配列内の値をインクリメントします。配列には、myArray [index] + = value'という構文があります。ですから、もしあなたが 'var myArray = [1,2,3]'を持っていて、最初の要素に '5'を追加したいのであれば、' myArray [0] + = 5'を実行します。索引「0」の使用に注目してください。インデックスがない構文( 'myArray + = 5')は、この場合に探しているものではありません。 –

+0

あなたが正しいと私は私がそれに気づいたので、私は私の前の答えを編集することができるまで待っていた!我々はそれが動作します、ありがとう! – Peter

関連する問題