2016-03-14 7 views
1

Я создаю веб-приложение, используя угловые js. У меня есть массив json-объекта. Мне нужны данные, которые имеют статус активного и pending.here мой массив:Фильтровать данные Json в angularjs Контроллер

$scope.response = staticRoutes : [ 
    {'id':1,'name':'ABC 1','subnet':'SUB 101','gateway':'GATE 101','status':'Active'}, 
    {'id':2,'name':'ABC 2','subnet':'SUB 102','gateway':'GATE 102','status':'In Active'}, 
    {'id':3,'name':'ABC 1','subnet':'SUB 101','gateway':'GATE 101','status':'Active'}, 
    {'id':4,'name':'ABC 2','subnet':'SUB 102','gateway':'GATE 102','status':'In Active'}, 
    {'id':5,'name':'ABC 1','subnet':'SUB 101','gateway':'GATE 101','status':'Active'}, 
    {'id':6,'name':'ABC 2','subnet':'SUB 102','gateway':'GATE 102','status':'In Active'}, 
    {'id':7,'name':'ABC 1','subnet':'SUB 101','gateway':'GATE 101','status':'Active'}, 
    {'id':8,'name':'ABC 2','subnet':'SUB 102','gateway':'GATE 102','status':'In Active'}, 
    {'id':9,'name':'ABC 1','subnet':'SUB 101','gateway':'GATE 101','status':'Active'}, 
    {'id':10,'name':'ABC 2','subnet':'SUB 102','gateway':'GATE 102','status':'In Active'}, 
    {'id':11,'name':'ABC 1','subnet':'SUB 101','gateway':'GATE 101','status':'Active'}, 
    {'id':12,'name':'ABC 2','subnet':'SUB 102','gateway':'GATE 102','status':'In Active'}, 
    {'id':13,'name':'ABC 3','subnet':'SUB 103','gateway':'GATE 103','status':'Pending'} 
] 
+0

попробовать этот Http: // StackOverflow .com/questions/20530637/filter-json-data-with-angularjs –

ответ

2

Попробуйте это:

var filterdata = []; 
     angular.forEach($scope.response,function(value,key){ 
      if(value.status == "active" || value.status == "pending") 
      { 
       filterdata.push(value); 

      } 
     }) 
     console.log(filterFlows) 
0

UnderscoreJs очень полезен в этом типе расчета

Решение -

var filteredData = _.filter($scope.response,function(response){ 
     return response.status === 'Active' || response.status === 'Pending' 
}); 

filteredData будет массивом фильтрованного содержимого.

+0

Это не сработает, потому что 'response' не определяется как параметр вашей анонимной функции. –

1

Для простого фильтра Underscore действительно не нужен, если вы не нацеливаете старые браузеры. Все полуавтоматические браузеры поддерживают Array.prototype.filter(). См. here для получения информации о том, как использовать его и поддержку браузера.

Используйте это так:

var filteredArray = $scope.response.filter(function(response){ 
    return response.status === 'Active' || response.status === 'Pending' 
}); 
+0

если я делаю это с underscoreJs, это неправильно? Я использовал underscoreJS i мое приложение, и я нашел его очень полезным. –

+0

Нет, конечно, не так! Однако для этой простой задачи вам это не нужно явно. Это добавленная зависимость, которая в большинстве случаев является избыточной для этого случая. Если вы уже используете Underscore, потому что вам это нужно для разных случаев, непременно. Но я бы не добавил зависимости к чему-то, когда это можно сделать так же легко без :) –

+0

да спасибо за объяснение @luka У меня есть большое приложение, поэтому я его использую. Это уменьшает количество кода. –

0

Предположим, что ваш массив называется staticRoutes, вы могли бы сделать

$scope.response = staticRoutes.filter(function(item){ 
    return item.status.toLowerCase() === 'active' || item.status.toLowerCase() === 'pending'; 
}); 
Смежные вопросы