Ввод с использованием имени объекта

Я пытаюсь настроить typeahead, используя AngularJS и UI Bootstrap вот так:

.html

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

<span>{{selectedStuff.name}}</span>
<span>{{selectedStuff.desc}}</span>

.js

$scope.stuffs= [
                {
                 "name":"thing1",
                 "desc":"this is the first thing"
                },
                {
                 "name":"thing2",
                 "desc":"this is the second thing"
                }
               ]

В настоящее время мне удалось обновить модель с выбранным именем, но моя цель — передать весь объект через файл typeahead. Есть ли чистый способ сделать это, используя только ввод?


person Jesse    schedule 15.04.2013    source источник


Ответы (2)


Ясное дело :-)

Директива typeahead из http://angular-ui.github.io/bootstrap/ использует тот же сверхгибкий синтаксис. в качестве директивы select AngularJS для ng-options. Итак, вы могли бы написать:

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

Вот рабочий пример: http://plnkr.co/edit/5kGZkNPZ7rIFfb4Rvxej?p=preview.

person pkozlowski.opensource    schedule 15.04.2013
comment
Удивительно! Так же просто и удивительно, как я надеялся. Благодарю вас! - person Jesse; 15.04.2013
comment
Я вижу «[Объект объекта]» в поле ввода, потому что мне нужно создать его экземпляр в контроллере, чтобы использовать его в контроллере. Если я не создаю его экземпляр и сначала он не определен, то он отображается нормально. Это мое затруднительное положение. Любые идеи? - person morgs32; 25.12.2013
comment
У меня такая же ошибка.. Объект объекта появляется после клика, morgs32 вам удалось это исправить? - person Bryan Arbelo - MaG3Stican; 18.06.2014
comment
Мне помогло сделать что-то вроде этого typeahead="item.ItemID for item in items_vendors.items | filter:$viewValue | limitTo:8", где ItemID — это то, что я хочу отобразить. - person Aarmora; 20.10.2014

У меня такая же проблема. Я решил это с помощью

typeahead="country.name for country in countryList | filter:$viewValue | limitTo:8"

здесь countryList — список объектов страны. имя является одним из свойств объекта страны. Для меня это работает нормально.

person zahid9i    schedule 15.01.2015