2017-01-02 4 views
0

私は2日間これをやり続けました。 APIデータを変更することはできないため、フロントエンド処理に対処する必要があります。私は本当に助けが必要です。ネストされたng-repeatの複雑なカスタムフィルタ

$scope.stationary = [{ 
    "name": "Pen", 
    "data": [{ 
     "date": "1-10-2017", 
     "inventory": 25 
    }, { 
     "date": "2-10-2017", 
     "inventory": 21 
    }] 
    }, { 
    "name": "Color Pencil", 
    "data": [{ 
     "date": "1-10-2017", 
     "inventory": 3 
    }, { 
     "date": "2-10-2017", 
     "inventory": 0 
    }] 
    }, { 
    "name": "Color Pencil Special", 
    "data": [{ 
     "date": "1-10-2017", 
     "inventory": 2 
    }, { 
     "date": "2-10-2017", 
     "inventory": 1 // make this view to '-' since inventory of color pencil is zero 
    }] 
    }] 

http://jsfiddle.net/op2zd2vr/

場合は色鉛筆の在庫がゼロであれば、ある表示する必要がある「 - 」色鉛筆特別コラムに。

答えて

0

これを試してみてください:

更新回答

myApp.filter('customFilter', function() { 
    return function(items) { 
     for (var i = 0; i < items.length; i++) { 
      for (var k = 0; k < items[i].data.length; k++) { 
       if (i != 0 && items[i - 1].data[k].inventory == 0) { 
        items[i].data[k]['isZero'] = true; 
       } else { 
        items[i].data[k]['isZero'] = false; 
       } 
      } 
     } 
     return items; 
    }; 
}); 

Updated jsfiddlelinkを参照してください。

私のために働いています。

+0

も作業jsfiddleのリンクを追加しました。 –

+0

あなたは質問を理解していなかった。 '0'の下の列に ' - 'を適用し、0は適用しないでください。私の場合は、カラー鉛筆特殊のためには2-10-2017に '0'でなければなりません。 –

+0

'name:Color Pencil'の' inventory'が** 0 **の場合、 'name:Color Pencil Special'に** - **を入れたいですか? –

0

データ自体を操作する必要があるようですが、この特定のケースでは単にフィルタを使用することはできません。ここで

は私のバイオリンです:(件のデータの名前ONTによって)使用http://jsfiddle.net/op2zd2vr/2/

ソリューション:

var positions = []; 
$scope.stationary.forEach(function (s) { 
    if(s.name === 'Color Pencil'){ 
     for(var i = 0; i < s.data.length; i++){ 
      if(s.data[i].inventory === 0){ 
      positions.push(i); 
      } 
     } 
    } 
    if(s.name === 'Color Pencil Special'){ 
     for(var i = 0; i < s.data.length; i++){ 
      if(positions.indexOf(i) >= 0){ 
      s.data[i].inventory = '-'; 
      } 
     } 
    } 
    }); 
+0

これは良い解決策ではありませんが、将来データが変更される場合はどうなりますか?それが私が指示を書いているところなので、再利用できます。 –

+0

このような名前をハードコードする必要はありません。私はディレクティブが必要です:( –

+0

あなたは定数として名前を格納し、これらの定数と私のループを使用して関数を作成する必要がありますか? – F3L1X79

関連する問題