md-items 未在 md-autocomplete Angular Material 中正确更新建议列表

md-items is not updating the suggesion list properly in md-autocomplete Angular Material

我正在使用 md-autocomplete,在那个 md-items 中,它没有正确更新从服务主机获得的响应列表 - Ajax 调用。

HTML源代码

<md-autocomplete flex required
    md-input-name="autocompleteField"
    md-no-cache="true"
    md-input-minlength="3"
    md-input-maxlength="18"
    md-selected-item="SelectedItem"
    md-search-text="searchText"
    md-items="item in querySearch(searchText)"
    md-item-text="item.DisplayName" Placeholder="Enter ID" style="height:38px !important;">
    <md-item-template>
        <span class="item-title">
            <span md-highlight-text="searchText" md-highlight-flags="^i"> {{item.ID}} </span>
            <span> - </span>
            <span md-highlight-text="searchText"  md-highlight-flags="^i"> {{item.Description}} </span>
        </span>
    </md-item-template>
</md-autocomplete>

AngularJS 脚本

//bind the autocomplete list when text change
function querySearch(query) {
    var results = [];
    $scope.searchText = $scope.searchText.trim();
    if (query.length >=3) {
        results = LoadAutocomplete(query);
    }
    return results;
}

//load the list from the service call
function LoadCPTAutocomplete(id) {
    TestCalculatorService.searchAutocomplete(id).then(function (result) {
        if (result.data != null) {
            $scope.iList = result.data;
        } else {
            $scope.iList = [];
        }
    });
    return $scope.iList;
}

我正在从服务主机获取自动完成列表。我得到了正确的响应,但它没有在 UI 中正确更新。

屏幕截图 1:

我在这里搜索 8224,但它显示了 822 的结果。我在 Firebug 中调试了问题,请参阅上面显示的屏幕截图,针对搜索词 8224 发送了请求,我得到了两个匹配项目的响应 JSON对象,如下图2

在UI中显示结果82232、82247、82248、82270。但实际上服务return是82247和82248。

如何为 Angular Material md-autocomplete 更新 UI 中的项目源?请帮助我。

支持性问题已发布在以下 link

下面post标记的答案是正确的,符合要求。

  • .then() - 承诺的全部力量 API 但稍微冗长
  • .success() - 不是 return 承诺,但提供稍微更方便的语法

不要使用 .success(),使用 .then 在 UI...

中获取更新结果