2015-04-04 2 views
0

У меня есть следующая структура.Как фильтровать массив в значении ключа массива в AngularJS

[ 
    { 
     "Variants": [ 
      { 
       "SellPrice": "75.00", 
       "VariantID": "10", 
       "VariantName": "1 L", 
       "InCart": "2", 
       "MRP": "115.00", 
       "VariantImagePath": "/images/ruchi/710_10.png" 
      }, 
      { 
       "SellPrice": "410.00", 
       "VariantID": "113", 
       "VariantName": "5 L", 
       "InCart": "1", 
       "MRP": "485.00", 
       "VariantImagePath": "/images/ruchi/710_113.png" 
      }, 
      { 
       "SellPrice": "1080.00", 
       "VariantID": "219", 
       "VariantName": "15L - Jar", 
       "InCart": "0", 
       "MRP": "1275.00", 
       "VariantImagePath": "/images/ruchi/710_219.png" 
      } 
     ], 
     "SubCategoryID": "32", 
     "ProductImagePath": "/images/ruchi/710.png", 
     "SubCategoryName": "Soyabean Oil", 
     "BrandName": "Ruchi", 
     "ProductID": "710", 
     "BrandID": "117", 
     "ProductName": "Ruchi soya oil" 
    }, 
    { 
     "Variants": [ 
      { 
       "SellPrice": "58.00", 
       "VariantID": "23", 
       "VariantName": "900 GM", 
       "InCart": "1", 
       "MRP": "60.00", 
       "VariantImagePath": "/images/mtr/771_23.png" 
      } 
     ], 
     "SubCategoryID": "110", 
     "ProductImagePath": "/images/mtr/771.png", 
     "SubCategoryName": "Vermicelli", 
     "BrandName": "MTR", 
     "ProductID": "771", 
     "BrandID": "167", 
     "ProductName": "Seviyan Vermicelli" 
    } 
] 

Хотите, чтобы отфильтровать все данные, где значение Variants.InCart является> 0.

В этом случае выход будет

ProductID VariantID InCart 
710   113   1 
710   10   2 
771   23   1 

и это мой цикл.

<tr ng-repeat="Item in ProductService.Products | <what should be filter condition here>"> 
    <td>{{Item.ProductID}} {{Item.Variants.VariantID}} {{Item.Variants.InCart}}</td> 
</tr> 

Просьба помочь.

+1

Вы уже прочитали документацию директивы фильтра? https://docs.angularjs.org/api/ng/filter/filter Также мне кажется странным иметь значение InCart строки типа и сравнение с номером 0. Это выглядит не очень хорошо. – dec

+0

Да, я проверил это. Они не дали никаких условий для массива в массиве. –

+0

Что я предлагаю вам, создайте скрипку, чтобы можно было сыграть с ней, чтобы решить вашу проблему. – Ved

ответ

1
<tr ng-repeat="Item in ProductService.Products | filter:customArrayFilter"> 
    <td>{{Item.ProductID}} {{Item.Variants.VariantID}} {{Item.Variants.InCart}}</td> 
</tr> 
$scope.customArrayFilter = function (item) { 
     return (item.InCart > 0); 
    }; 

Вы можете добавить пользовательский фильтр, как это ..

+0

Но как цикл перейдет к следующему варианту того же элемента? –

+0

- это массив в массиве? – Kandarp

+0

да !!!!!!!!!!!!!! –

Смежные вопросы