【发布时间】:2017-08-23 14:15:09
【问题描述】:
我有一个处理一些大表的数据管理应用程序。
我们已经实施了本地存储解决方案,以使其在慢速连接时变得流畅,但在尝试对 typeaheads 实施自定义过滤时遇到了问题
typeahead 可以很好地处理本地值数组,但是由于排序不是很精确,用户会感到沮丧,因为明显的匹配有时会显示最后一个或只是在 100 多个其他结果中丢失
在浏览完这些库后,我找不到明显的方法来调整 Angular 实现的排序方法,因此我们决定使用用户输入动态创建列表,标记为:
<input type="text" class="form-control"
placeholder="Search"
ng-model="oi.clinicalDisorder"
typeahead-wait-ms="1000"
uib-typeahead="clinicalDisorder as clinicalDisorder.clinicalDisorderName for clinicalDisorder in startsWith($viewValue) | limitTo:200"
typeahead-editable="false">
在我的控制器中:
$scope.startsWith = function(viewValue) {
if (viewValue.length>3){
return $http({
method: 'GET',
url: 'api/_search/clinical-disorders/'+viewValue})
.then(function successCallback(response) {
$scope.dynamicClinicalDisorders = response.data;
return $scope.dynamicClinicalDisorders;
},
function errorCallback(response) {
console.log(response);
});
}
};
后端查询工作正常
在客户端,它打印出$scope.dynamicClinicalDisorders 中列表的值,访问所有属性就好了,但它不会将列表加载到预先输入的下拉列表中。
我的代码基于来自this question的plunker
我很确定我忽略了这件愚蠢的事情,但我已经做了太久了,找不到它
【问题讨论】:
标签: javascript angularjs angular-ui-bootstrap angular-ui-typeahead