【问题标题】:md-autocomplete with webapi call showing previous results带有 webapi 调用的 md-autocomplete 显示以前的结果
【发布时间】:2017-07-11 05:50:57
【问题描述】:

所以我试图通过调用 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;
    });
}

【问题讨论】:

    标签: jquery angular-material md-autocomplete


    【解决方案1】:

    我通过将方法更改为同步来修复它,但我不确定这是否是可接受的修复?

     $.ajax({
            url: vm.memportalUrl + "securewebapi/GetVendorList/?jsonCatalogInfo=" + JSON.stringify(jsonCatalogInfo),
            success: function (result) {
                console.log('success calling GetVendorList');
                //defer.resolve(result);
                var jsonResult = JSON.parse(result);
                vm.vendorResults = JSON.parse(jsonResult);
                console.log(vm.vendorResults);
                //return vm.vendorResults;
            },
            async: false
        });
        return vm.vendorResults;
    

    编辑:只是想更新这个并说另一个开发人员在应用程序中包含了 angular-block-ui,这通过在每次异步调用期间阻塞整个 UI 来导致问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      相关资源
      最近更新 更多