如何在 Angular-material 自动完成中显示远程查询的结果?
How to show results from remote query in Angular-material autocomplete?
我正在使用 angular-material in which I use the auto-complete. Within this autocomplete (codepen here 编写网站)有一个函数 returns 从本地演示搜索项数组中搜索结果,(简化)如下所示:
function querySearch (query) {
var results = query ? self.repos.filter( createFilterFor(query) ) : self.repos, deferred;
return results;
}
我现在想编辑这段代码,这样我就可以在输入每个字母后查询服务器。所以我写了 angular 代码来查询服务器和 return 一个承诺,:
function querySearch (query) {
return $http.get('/ajax/user/search/' + query).then(function(data){
console.log(data); // I've got the data here. All fine.
return data.data;
});
}
不幸的是,这并不奏效;服务器查询正常,但我看到一个空的建议列表,如下所示:
有人知道我该如何解决这个问题吗?欢迎所有提示!
一个快速修复方法是 return 函数为:
function querySearch (query) {
return $http.get('/ajax/user/search/' + query).success(function(data){
console.log(data); // I've got the data here. All fine.
return data.data;
});
}
然后在视图中将调用更改为:
md-items="item in ctrl.querySearch(ctrl.searchText)()"
因此现在执行您 return 的功能。
(Codepen 展示解决方案:http://codepen.io/anon/pen/qdyEBy)
查看此处的示例并单击关闭模拟查询并禁用查询缓存 - https://material.angularjs.org/latest/#/demo/material.components.autocomplete
如果您确实希望它每次都触发,请确保禁用缓存 md-no-cache="false"
并设置 md-min-length="0"
您只想用您的实际查询替换他们必须模拟查询的超时
function querySearch (query) {
var results = query ? self.states.filter( createFilterFor(query) ) : self.states,
deferred;
if (self.simulateQuery) {
deferred = $q.defer();
//repalce this
$timeout(function () { deferred.resolve( results ); }, Math.random() * 1000, false);
return deferred.promise;
} else {
return results;
}
}
并且return你的承诺。
我正在使用 angular-material in which I use the auto-complete. Within this autocomplete (codepen here 编写网站)有一个函数 returns 从本地演示搜索项数组中搜索结果,(简化)如下所示:
function querySearch (query) {
var results = query ? self.repos.filter( createFilterFor(query) ) : self.repos, deferred;
return results;
}
我现在想编辑这段代码,这样我就可以在输入每个字母后查询服务器。所以我写了 angular 代码来查询服务器和 return 一个承诺,
function querySearch (query) {
return $http.get('/ajax/user/search/' + query).then(function(data){
console.log(data); // I've got the data here. All fine.
return data.data;
});
}
不幸的是,这并不奏效;服务器查询正常,但我看到一个空的建议列表,如下所示:
有人知道我该如何解决这个问题吗?欢迎所有提示!
一个快速修复方法是 return 函数为:
function querySearch (query) {
return $http.get('/ajax/user/search/' + query).success(function(data){
console.log(data); // I've got the data here. All fine.
return data.data;
});
}
然后在视图中将调用更改为:
md-items="item in ctrl.querySearch(ctrl.searchText)()"
因此现在执行您 return 的功能。
(Codepen 展示解决方案:http://codepen.io/anon/pen/qdyEBy)
查看此处的示例并单击关闭模拟查询并禁用查询缓存 - https://material.angularjs.org/latest/#/demo/material.components.autocomplete
如果您确实希望它每次都触发,请确保禁用缓存 md-no-cache="false"
并设置 md-min-length="0"
您只想用您的实际查询替换他们必须模拟查询的超时
function querySearch (query) {
var results = query ? self.states.filter( createFilterFor(query) ) : self.states,
deferred;
if (self.simulateQuery) {
deferred = $q.defer();
//repalce this
$timeout(function () { deferred.resolve( results ); }, Math.random() * 1000, false);
return deferred.promise;
} else {
return results;
}
}
并且return你的承诺。