2015-03-18 2 views
0

У меня есть следующая Угловая служба:фильтра ответ API в Угловом

GetEstateTypes: function() { 
    return $http.get('api/estate-types'); 
}  

который возвращает следующее:

[ 
    {"id":1,"name":"House"}, 
    {"id":2,"name":"Apartment"}, 
    {"id":3,"name":"Shop"}, 
    {"id":4,"name":"Warehouse"} 
] 

Как я могу создать фильтр, так что я могу передать список идентификаторов GetEstateTypes и фильтровать ответ?

Например, пройдя 1 и 2, ответ будет отфильтрован, и GetEstateTypes вернет только первые две строки.

ответ

0

Ваш customFilter будет выглядеть следующим образом.

app.filter('customFilter', function(){ 
    return function(values, list){ 
     var returnValue = []; 
     angular.forEach(values, function(val, index){ 
     if(val.id.indexOf(list)) 
      returnValue.push(val.id); 
     }); 
     return returnValue; 
    } 
}); 

Вы можете использовать его на HTML, как показано ниже

HTML

<div>{{estateTypes | customFilter: selectedItems}}<div> 

Или внутри контроллера можно использовать как ниже

контроллер

$filter('estateTypes')($scope.estateTypes, selectedItems); 

В обоих выше растворе selectedItems бы и массив идентификаторов выбранного элемента, как [1,2,3]

0

Вы можете создать фильтр и использовать его в контроллере.

Вот Plunker

Я не уверен, что вы фильтр будет основываться на так это просто возвращает < 2;

app.controller('MainCtrl', function($scope, spotSortFilter) { 
... 
app.filter('spotSort', function(){ 
0
GetEstateTypes: function (value) { 
     return $http.get('api/estate-types?id=value'); 
    } 

Это значение должно быть массивом, и вы должны получить значение массива в интерфейсе и выбрать только с теми ДАННЫМИ идентификаторов в интерфейсе и передать JSON.

Для примера, если PHP ваш бэкенд затем

foreach($_GET['id'] as $value){ 
     $newArray[] = //fetch values for that id. 
} 
json_encode($newArray); 

This link поможет вам больше на массиве на внутреннем интерфейсе и This поможет вам для создания массива в передней части.

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