Angular UI typeahead 不在选择时填充文本框
Angular UI typeahead doesn't populate textbox upon selection
我正在使用 Angular UI typeahead 指令。我有一份预先输入保管箱中的人员名单。人员列表是一个对象数组,具有 LastName
、FirstName
、CustomerNumber
等属性(请注意,我的域完全不同,为了清楚起见,这是一种简化) .如果我有以下预输入控件,一切正常:
<input type="text" ng-model="vm.selectedCustomer"
typeahead-append-to-body="true"
uib-typeahead="i.LastName for i in vm.lstCustomers | filter:$viewValue" />
但是,我想在预输入保管箱中显示更多客户信息。比方说,我在控制器中有一个函数:
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);
}
但我不应该那样做,不是吗?我是不是遗漏了什么,或者我偶然发现了一个错误?
请尝试如下图
<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" />
我正在使用 Angular UI typeahead 指令。我有一份预先输入保管箱中的人员名单。人员列表是一个对象数组,具有 LastName
、FirstName
、CustomerNumber
等属性(请注意,我的域完全不同,为了清楚起见,这是一种简化) .如果我有以下预输入控件,一切正常:
<input type="text" ng-model="vm.selectedCustomer"
typeahead-append-to-body="true"
uib-typeahead="i.LastName for i in vm.lstCustomers | filter:$viewValue" />
但是,我想在预输入保管箱中显示更多客户信息。比方说,我在控制器中有一个函数:
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);
}
但我不应该那样做,不是吗?我是不是遗漏了什么,或者我偶然发现了一个错误?
请尝试如下图
<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" />