所以我试图通过调用 webapi 来自动完成,它正在工作/返回正确的数据,但是 md-autocomplete 总是显示上一次 webapi 调用的结果,而不是最近一次调用的结果。所以当用户输入两个字符时,自动完成下拉菜单不会加载,但我会看到 webapi 成功返回结果。然后当用户输入第三个字符时,它将显示调用 webapi 时的结果,其中包含两个字符。似乎在加载数据之前返回了 return vm.vendorResults 。我究竟做错了什么?谢谢!
<div ng-cloak="">
<label for="usr">Manufacturer</label>
<md-autocomplete ng-disabled="false"
md-no-cache="true"
md-selected-item="vm.selectedVendor"
md-search-text="vm.vendorSearchString"
md-items="vendor in vm.getVendorList2(vm.vendorSearchString)"
md-item-text="vendor.ve_name"
md-min-length="2"
placeholder="Select Manufacturer">
<md-item-template>
<span md-highlight-text="vm.vendorSearchString" md-highlight-flags="^i">{{vendor.ve_name}}</span>
</md-item-template>
</div>
vm.getVendorList2 = function (vendorSearchText) {
console.log('calling getvendorlist2');
var jsonCatalogInfo = vm.cataloginfoVL();
jsonCatalogInfo.ve_name = vendorSearchText;
console.log(vendorSearchText);
$.get(vm.memportalUrl + "securewebapi/GetVendorList/?jsonCatalogInfo=" + JSON.stringify(jsonCatalogInfo))
.then(function (result) {
console.log('success calling GetVendorList');
var jsonResult = JSON.parse(result);
vm.vendorResults = JSON.parse(jsonResult);
console.log(vm.vendorResults);
return vm.vendorResults;
});
}