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

Я изучаю AngularJs...

Пример : -

Мой Json Имея массив с некоторыми значениями в качестве типов: -

Допустим, ресторан будет мексиканским или итальянским и т. д. Мой пример

 {
  name:'res 123',
  description:'Italian Rest'
   types:['Mexican','Indian']
   }

<input type="checkbox" data-ng-model="Mexican"/> // Iam Using Textbox  Oncheck Filter Need to Filter all the Objects with types:['Mexican'] 

 Filter Code :- 
 <div class="col-xs-12" data-ng-repeat="obj in objs| filter : objs.types[1]: Mexican" > <!-- Filter applied Like this -->
 Realted looping 
</div>

Как я могу применить фильтр, взяв значение types:['Mexican'] в качестве входных данных для проверки фильтра при включении?


person Prasad    schedule 04.05.2015    source источник
comment
не могли бы вы уточнить, что вы хотите?   -  person Pankaj Parkar    schedule 04.05.2015
comment
Эй, Панкадж, пожалуйста, взгляните, я только что улучшил вопрос   -  person Prasad    schedule 04.05.2015
comment
@PRASAD, значит, у вас есть список ресторанов (в вашем примере objs), и вы хотите отфильтровать их по типу?   -  person New Dev    schedule 04.05.2015
comment
Да, это может состоять из более чем одного значения в массиве, но мне нужно отфильтровать по первому значению или любому значению массива. Но я предпочитаю идти с первым значением   -  person Prasad    schedule 04.05.2015
comment
Что это значит под первым значением или любым? Разве это не сводится к любому значению?   -  person New Dev    schedule 04.05.2015
comment
Если вам особенно интересно, как отфильтровать результаты, возможно, это может помочь: stackoverflow.com/questions/13464809/   -  person Ed B    schedule 04.05.2015
comment
Извините за путаницу. Мне просто нужно отфильтровать по одному из значений. Если у вас есть предложение по фильтрации нескольких значений, я могу использовать его для эффективной фильтрации :-)   -  person Prasad    schedule 04.05.2015
comment
Просто встроенный фильтр должен работать с массивом так же, как если бы он был примитивом: docs.angularjs.org/api/ng/filter/filter. Вы смотрели на это?   -  person New Dev    schedule 04.05.2015
comment
Да, я это сделал, но у документа есть друзья = [{obj}, {obj}] Но в моем сценарии есть типы: ['мексиканский','итальянский'] (типы встроены в поле в схеме).. где я застрял   -  person Prasad    schedule 04.05.2015
comment
Вы не можете изменить массив в более подходящий формат JSON, например? [{type:'Mexican'}, {type:'Indian'}];   -  person Ed B    schedule 04.05.2015
comment
В этом примере friends эквивалентно вашему objs, а types — это одно из свойств, например name в примере с друзьями.   -  person New Dev    schedule 04.05.2015
comment
@Ed B Да, может быть, мне нужно поднять запрос на изменение схемы   -  person Prasad    schedule 04.05.2015
comment
@ Новый разработчик позвольте мне обновить мою модель с некоторыми полями   -  person Prasad    schedule 04.05.2015
comment
@ all Не могли бы вы дать мне идею, как фильтровать по мексиканскому языку?   -  person Prasad    schedule 04.05.2015


Ответы (1)


Встроенный фильтр в Angular принимает хэш, указывающий, по каким свойствам сопоставляться с каждым элементом в массиве.

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

var restaurants = [
  { name: "foo", types: ["Mexican", "Indian"] },
  { name: "bar", types: ["Mexican"] },
  { name: "baz", types: ["Italian"] }
];

тогда, если вам нужно отфильтровать по name, вводом для filter будет {name: 'b'}, что даст вам "bar" и "baz".

Точно так же, если вам нужно отфильтровать по types, даже если это массив, аналогичный подход будет работать: {types: "Mexican"}.

Итак, вам просто нужно сконструировать этот объект — назовем его filterBy.

<input type="checkbox" ng-model="filterBy.types" 
       ng-true-value="'Mexican'"
       ng-false-value="undefined"> Mexican

<div ng-repeat="r in restaurants | filter: filterBy>
  {{r.name}}
</div>

Демо

person New Dev    schedule 04.05.2015
comment
@PRASAD, так это ответило на ваш вопрос? - person New Dev; 04.05.2015