2015-11-22 4 views
0

У меня есть модель, как этотКак отфильтровать массив в angularJS на основе длины подмассива

public class City 
    { 
    public string Name {get; set;} 
    public List<Classified> Classifieds {get; set;} 
    public List<Area> Areas {get; set;} 
    } 

В мой контроллер angualrJs, у меня, как показано ниже

$scope.cities = data; // I'm getting data (array of city). 

Сейчас я пытаюсь фильтр cities на основе Classifieds(.length > 0) и Areas (.length > 0), как показано ниже.

<tr ng-repeat="city in cities | filter: { classifieds: '!!' }"> -- Not Working. 

<tr ng-repeat="city in cities | filter: { areas: '!!' }"> -- Not Working. 

Я хочу, чтобы некоторые вещи, как этот

<tr ng-repeat="city in cities | filter: { areas.length >0 }"> -- Tried this one as well. Not Working. 
+0

Вы можете показать содержимое массива данных? – DanR

+0

Это в формате Json. от webapi я возвращаюсь Список . –

ответ

0

В случае, если Ваше $scope.cities переменная содержит данные в следующем формате:

$scope.cities = [{name: 'a', classifieds: [], areas: []}, 
       {name: 'b', classifieds: [], areas: [1]}, 
       {name:'c', classifieds:[1], areas:[]}]; 

Вы можете создать пользовательскую функцию фильтра, таких как:

$scope.hasData = function(city) { 
    return city.areas.length > 0 || city.classifieds.length > 0; 
}; 

использование:

<td ng-repeat="city in cities | filter: hasData">{{city.name}}</td> 

EDIT:

JSFiddle: https://jsfiddle.net/9sxeawr5/

+0

Простой. Ищите то же самое. Я новичок в angularJs. Благодарю. –

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