【发布时间】:2015-07-16 12:17:43
【问题描述】:
我正在使用angular-material 编写一个网站,其中我使用auto-complete。在此自动完成 (codepen here) 中,有一个函数从本地演示搜索项数组返回搜索结果,该数组(简化)如下所示:
function querySearch (query) {
var results = query ? self.repos.filter( createFilterFor(query) ) : self.repos, deferred;
return results;
}
我现在想编辑此代码,以便在键入每个字母后查询服务器。所以我写了 Angular 代码来查询服务器并返回一个 Promise,as instructed here:
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;
});
}
不幸的是,这并没有真正起作用;服务器可以正常查询,但我看到一个空的建议列表,如下所示:
有人知道我该如何解决这个问题吗?欢迎所有提示!
【问题讨论】:
-
抱歉 - 您的意思是每次您输入字母时都会重新查询自动完成答案吗?
-
@ajmajmajma - 确实是的
-
示例是这样做的 - material.angularjs.org/latest/#/demo/… ,勾选模拟查询,并禁用缓存
-
@ajmajmajma - 我看到带有 $q 和超时的代码,但我不知道如何编辑它以便可以用它调用我的端点。任何提示都会在这里真正帮助我.. :-)
-
您是指该示例中的 querySearch 函数吗?它只是设置了一个承诺,所以你几乎可以用实际调用替换 $timeout 。我认为你想要的东西已经内置了:)
标签: javascript angularjs asynchronous callback promise