2017-03-03 4 views
0

webapiを呼び出して自動完成しようとしていますが、正しいデータを返していますが、md-autocompleteは以前のwebapi呼び出しの結果を常に表示しています。最近のものユーザーが2文字を入力すると、オートコンプリートドロップダウンはロードされませんが、webapiが正常に結果を返すことがわかります。ユーザーが3番目の文字を入力すると、webapiが2文字で呼び出されたときの結果が表示されます。 vm.vendorResultsは、データがロードされる前に返されているようです。私は間違って何をしていますか?ありがとう!webapiで前回の結果を表示しているmd-autocomplete

<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; 
    }); 
} 

答えて

0

私はそれを同期させる方法を変更して修正しましたが、これが許容可能な修正であるかどうかわかりませんか?

$.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; 

編集:ただ、これを更新し、他の開発者は、すべての非同期呼び出し中に全体のUIをブロックすることによって、問題の原因となったアプリケーションの角ブロック-UIが含まれていることを言いたかったです。

関連する問題