簡體   English   中英

在api回調函數中預先使用angular-ui bootstrap typea

[英]Use angular-ui bootstrap typeahead with api callback function

我正在嘗試向我的項目添加預輸入控件。 我嘗試使用過濾器選項,但有時結果在成千上萬的范圍內,這使我的應用程序的性能得以爬升

所以我要使用異步方法。

這里的問題是,我不能使用$ http服務來使用api,我需要使用客戶專有的方法,由於授權原因,並且它不返回諾言,我需要傳遞成功和失敗的回調函數為了得到結果。

這是我提前輸入的結構

<div class="input-group typeahead">
                        <input type="text" class="form-control" ng-model="stopToEdit.STOP_SITE" uib-typeahead="site.SITE_CODE as site.SITE_NAME for site in sites" ng-keyup="fnGetSites(stopToEdit.STOP_SITE, stopToEdit.STOP_TYPE)"
                               typeahead-loading="loadingLocations" typeahead-no-results="noResults" typeahead-popup-template-url="siteList.html" />
                        <span class="input-group-btn">
                            <button class="btn btn-default" type="button" ng-click="fnSearchSites()"><span class="fa fa-binoculars"></span></button>
                        </span>
                    </div>

這是我為了填充站點數組而調用的方法

$scope.fnGetSites = function (val, stopType) {
        if (val === '') {
            $scope.sites = null;
            return;
        } else if (val.length < 4) {
            $scope.sites = null;
            return;
        }
        $scope.showLoadingSpinner = true;
        blockUIOnCall = false;
        customerPropietaryObject.get(<api rest url to consume>, function (results) {
            $scope.sites = results;
            $scope.$digest();
        }, $scope.fnShowErroMsg);
    }

問題是,結果存儲正確,但是$digest$apply都無法正常顯示結果。 我需要執行另一項操作,例如在文本框中寫入另一個字符或激活字段blur以顯示結果。

因此,如果我寫“ stev”,我確實會得到結果,但是直到我寫“ steve”之前,我都會得到“ stev”的結果

任何想法如何解決和實現這一目標?

謝謝

好吧,在將這些問題拋之腦后,專注於其他事情之后,我終於決定嘗試解決它。

最后,解決方案非常簡單,我只需要創建自己的promise作為起點,然后將我的客戶專有方法轉換為promise,最后得到

var prom = new Promise(function (resolve, reject) {
            customerPropietaryObject.get(<api rest url to consume>, function (results) { resolve(results) }, function (data) { reject(data) });
        });
        return prom.then(function (results) {            
            return results;
        });

現在,我只需要弄清楚如何將數據顯示為KEY | VALUE KEY | VALUE作為自動完成查詢,是因為keyvalue包含文本字段text

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM