AngularJS自动填充下拉列表显示以前的api响应

时间:2018-11-13 07:59:23

标签: angularjs autocomplete angular1.6

我已经有一段时间没有使用AngularJS了,现在,对于某些旧项目,我必须重新开始使用它。一项要求是我必须提供自动完成功能,以下是HTML:

<md-autocomplete
    ng-if="!enteredJd.id"
    ng-disabled="ctrl.isDisabled" md-no-cache="ctrl.noCache"
    md-selected-item="ctrl.selectedItem"
    md-search-text-change="ctrl.searchTextChange(ctrl.searchText)"
    md-search-text="ctrl.searchText"
    md-selected-item-change="ctrl.selectedItemChange(item)"
    md-items="item in ctrl.searchedCompanies"
    md-item-text="item"
    md-min-length="0"
    placeholder="Enter hiring company name">
    <md-item-template>
        <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item}}</span>
    </md-item-template>
</md-autocomplete>

这是JS:

self.isDisabled = false;
self.searchedCompanies = [];
self.selectedItemChange = selectedItemChange;
self.searchTextChange = searchTextChange;
self.querySearch = querySearch;

function searchTextChange(text) {
    console.log('searching:', text);
    $scope.enteredJd.companyName = text;
    $http.defaults.headers.post["Content-Type"] = "application/json";
    var body = {
            type: 'company',
            term: text
    };
    $http.post("/api/search",body).then(function(resp) {
        self.searchedCompanies = [];
        resp.data.forEach(function(item){
            self.searchedCompanies.push(item.standardName);
        });
        console.log(self.searchedCompanies)
    });
}

但是当我测试它时,我发现了一些奇怪的东西。

该下拉列表仅显示以前的API响应结果,而不显示当前结果。这种行为是如此奇怪,我调试出Api响应是正确的,一旦api返回,我便将其分配给searchedCompanies,理想情况下,当我更新此变量时,下拉选项应进行相应更新,但是为什么更新时却显示以前的api响应和当前api响应会在下一个api响应期间显示吗?

感谢并希望听到您对此的分析。

我跟随了演示,似乎有这个问题:

md-items="item in ctrl.querySearch(ctrl.searchText)"

但是当我使用这个时,它从来没有到过,那是怎么回事?

0 个答案:

没有答案