Angular UI typeahead在选择时不会填充文本框

时间:2016-05-01 01:22:29

标签: angularjs angular-ui-bootstrap angular-ui

我正在使用Angular UI typeahead指令。我有一个在typeahead dropbox中的人员列表。人员列表是一组具有LastNameFirstNameCustomerNumber等属性的对象(注意,我的域名完全不同,为简化起见,这是一个简化) 。如果我有以下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);
}

但我不应该这样做,不是吗?我错过了什么,或者我偶然发现了一个错误?

1 个答案:

答案 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" />