Как отобразить только свойство, которое имеет совпадение в массиве объектов? Упреждающий ввод

Привет, у меня есть массив объектов, которые я хочу отфильтровать с помощью typeahead.

это мой входной тег

<input type="text" ng-change="onedit()"  ng-model="selected" uib-typeahead="state as state.city for state in states | filter:$viewValue | limitTo:8">

Это массив, который я хочу отфильтровать:

$scope.states = [
      {state: 'Alabama', firstName: "Jim"},
      {state: 'Alaska', firstName: "Tom"},
      {state: 'Arizona', firstName: "Alan"},
      {state: 'Arkansas', firstName: "Mark"},
      {state: 'California', firstName: "Maria"}
]

На данный момент он отображает только состояние, соответствует ли оно firstName или состоянию. Как я могу сделать так, чтобы он отображал только свойства firstName, если он соответствует firstName, и отображал только состояния, если он соответствует состояниям

Вот мой PLUNKER

Тип, который я использую, я думаю, из angular-bootstrap.

Я почти уверен, что вы можете сделать это, как я видел в каком-то онлайн-примере, но не могу найти.


person Octtavius    schedule 08.11.2017    source источник


Ответы (1)


Будьте точны со свойством firstName при применении filter.

uib-typeahead="state as state.city for state in states 
               | filter: { firstName: $viewValue} | limitTo:8">

Разветвленный планкер

person Pankaj Parkar    schedule 08.11.2017
comment
он делает то же самое. Ничего не изменилось. Я только что проверил плунжер. и я думаю, что здесь вы ограничили фильтрацию только по имени. что мне нужно, так это найти совпадение как в состоянии, так и в имени, но, скажем, он нашел Алан, а затем отобразить только совпадение firstName, если оно имеет совпадение в значении состояния отображения состояния, которое соответствует. Например. Я набираю AL и получаю список ALan, ALaska, ALabama. Теперь, если у меня есть 1 объект {state: Alaska, firstName: Alan} и я хочу ввести Alan, я получаю отображаемое название штата вместо firstName - person Octtavius; 08.11.2017
comment
state as (state.state + ' ' + state.firstName) может быть то, что вы хотите? Он выделяет либо состояние, либо имя... - person Ric; 08.11.2017
comment
@Ric Мне нужно, чтобы они были отдельными, если вы хотите найти по имени, фамилии, электронной почте или городу. представьте, что вы вводите электронную почту, но вместо этого получаете полное имя. Я хочу видеть предложения по мере того, как вы печатаете. Например, мне нужно увидеть электронную почту пользователя, и я знаю только имя пользователя, поэтому, когда я вставляю john, я хочу видеть что-то вроде [email protected]. Раздражает то, что я видел это до работы где-то, но больше не могу найти :) - person Octtavius; 08.11.2017
comment
О, извините, я неправильно понял вопрос. Скажите, что если у вас есть searchQuery совпадений с firstName одной записи и lastName другой. Что вы хотели увидеть в результате? Только результаты с именем/фамилией - person Pankaj Parkar; 09.11.2017