1
我正在使用Angular UI typeahead指令。我有一个人在列表中的列表。人员列表是一组具有诸如LastName
,FirstName
,CustomerNumber
等属性的对象(请注意,我的域是完全不同的,并且这是为了清晰起见的简化)。一切工作正常,如果我有以下预输入控制:Angular UI typeahead在选择时不填充文本框
<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);
}
但我不应该这样做,我应该?我错过了什么,或者我偶然发现了一个错误?
谢谢。它不仅解决了我的问题,而且实际上产生了更好的模型。我显然需要更好地理解'select'指令语法! – Felix
热烈欢迎您:) – Sampath
Sampath,如果您不介意的话,您能指点我一个地方,这个语法记录在哪里? Angular UI *引用*“作为sourceArray中的值选择标签” - 但我无法找到它将进入实际定义的位置......提前致谢! – Felix