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...
中获取更新结果
我正在使用 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...
中获取更新结果