Подтвердить что ты не робот

Limit Angular UI-Bootstrap Typeahead для конкретного свойства объекта

У меня есть Angular UI-Bootstrap typeahead отлично работает:

<input class="span2" type="text" ng-model="selectedStuff" typeahead="stuff as stuff.name for stuff in stuffs | filter:$viewValue"/>

Хотя, он почти работает слишком хорошо. Я могу показать stuffs.name для целей typeahead И выбрать полный объект stuff в stuffs. Проблема в том, что my $viewValue соответствует всем свойствам в stuff, а не только stuff.name. Я попытался добавить .name в разные места в typeahead без везения. Есть ли простой способ отобразить и сопоставить только .name, но все же вернуть весь объект?

4b9b3361

Ответ 1

Директива typeahead из репозитория http://angular-ui.github.io/bootstrap/ была построена так, чтобы хорошо вписываться в существующую экосистему AngularJS. Это означает, что эта директива пытается повторно использовать как можно больше синтаксиса, фильтров и директив, уже используемых в AngularJS.

Вернуться к вашему вопросу - сама фильтрация выполняется фильтром фильтров Angular, описанным здесь: http://docs.angularjs.org/api/ng.filter:filter Указанный синтаксис фильтра достаточно гибкая, чтобы ограничить поиск выбранным набором свойств:

typeahead="stuff as stuff.name for stuff in stuffs | filter:{name: $viewValue}"

Обратите внимание: filter:{name: $viewValue}

Рабочий планк здесь: http://plnkr.co/edit/o1qWKq8LSmbbmVaYkOvb?p=preview