我一直在使用类型提前指令,它一直很好用: http://angular-ui.github.io/bootstrap/#/typeahead
我的问题是,我已经离开了我正在使用整个对象的场景:
<input type="text" ng-model="MyPerson" typeahead="i as i.Name for i in PeopleSearch($viewValue)" />
对于我只想要部分对象的场景:
<input type="text" ng-model="MyPerson" typeahead="i.Id as i.Name for i in PeopleSearch($viewValue)" />
此时,无论为“as”输入什么,模型和文本框都将包含相同的内容。任何人都可以解释为什么会这样吗?似乎逻辑应该模仿ng-options的表达式,但显然情况并非如此。
以下是演示:http://plnkr.co/edit/5oqlldC3PltnrynqhnAU?p=preview
选择项目后,文本框应包含此人的姓名。
答案 0 :(得分:3)
以下是我的决议,以防其他人遇到此问题:
<input type="text" ng-model="MySelectedPerson" typeahead="i as i.Name for i in PeopleSearch($viewValue)" typeahead-on-select="MyPerson = MySelectedPerson.Id" />