我正在使用Angular UI typeahead指令。我有一个在typeahead dropbox中的人员列表。人员列表是一组具有LastName
,FirstName
,CustomerNumber
等属性的对象(注意,我的域名完全不同,为简化起见,这是一个简化) 。如果我有以下typeahead控件,一切正常:
<input type="text" ng-model="vm.selectedCustomer"
typeahead-append-to-body="true"
uib-typeahead="i.LastName for i in vm.lstCustomers | filter:$viewValue" />
但是,我想在预先输入的Dropbox中显示更多客户信息。让我们说,我在控制器中有一个功能:
vm.getFullName = function(customer) {
return customer.LastName + ", " + customer.FirstName + " - " + customer.CustNumber;
}
和相应的指令:
<input type="text" ng-model="vm.selectedCustomer"
typeahead-append-to-body="true"
uib-typeahead="vm.getFullName(i) for i in vm.lstCustomers | filter:$viewValue" />
选择完成后,模型会正确填充;但是文本框显示undefined, undefined - undefined
(奇怪的是,结构看起来像getFullName()
应用于空值 - 用逗号和破折号表示。)
如果我浏览lstCustomers的每个元素并应用getFullName(),一切看起来都很好:
var lstCustomersFlat = [];
for (i = 0; i < vm.lstCustomers.length; i++) {
var customer = vm.getFullName(vm.lstCustomers[i]);
lstCustomersFlat.push(customer);
}
但我不应该这样做,不是吗?我错过了什么,或者我偶然发现了一个错误?
答案 0 :(得分:1)
请尝试如下所示。
<input type="text" ng-model="vm.selectedCustomer"
typeahead-append-to-body="true"
uib-typeahead="i as vm.getFullName(i) for i in vm.lstCustomers | filter:$viewValue" />