Соответствие нескольким значениям свойств объекта в AngularJS typeahead

Я пытаюсь получить заголовок пользовательского интерфейса Angular Bootstrap для сопоставления с несколькими свойствами. Если у меня есть массив таких объектов:

{
    "city":"New York",
    "region":"NY",
    "country":"USA"
},
{
    "city":"London",
    "region":"England",
    "country":"UK"
}

Упреждающий ввод может соответствовать любому из трех свойств (город, регион, страна), и если это так, вернуть все в виде строки в раскрывающемся списке результатов.

Если пользователь вводит "NY", он должен вернуться и отобразить

New York, NY, USA

И если вместо этого пользователь вводит "Lon", он должен вернуться и отобразить

London, England, UK

Мне интересно, возможно ли сделать то, что это, и что может быть лучшим подходом?

Примечание. Заголовок шрифта настроен так, чтобы он соответствовал ведущим символам.


person zilj    schedule 21.01.2015    source источник


Ответы (1)


<сильный>1. определить модель

$scope.model.addresses = [
    {"city":"New York","region":"NY","country":"USA"},
    {"city":"London","region":"England", "country":"UK"}
];

<сильный>2. определить пользовательскую функцию фильтра

$scope.findAddress = function(keyword) {
   return $filter('filter')($scope.model.addresses , {'$': keyword});
}

'$' - означает найти во всех свойствах

<сильный>3. и попробуйте использовать таким образом

<input typeahead="address for address in findAddress($viewValue)"/>
person p.misiuda    schedule 20.02.2015