首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过$http将angular-ui的typeahead与服务器绑定在一起进行服务器端优化?

如何通过$http将angular-ui的typeahead与服务器绑定在一起进行服务器端优化?
EN

Stack Overflow用户
提问于 2013-04-10 23:37:33
回答 2查看 60.2K关注 0票数 69

我特别感兴趣的是找出当前输入的字符串,以便我可以将其发送到服务器并返回已经过滤的结果-我想在服务器端进行这种优化,并最小化我的查询,我不认为对于数据库中有超过200,000个条目的应用程序来说,返回整个结果集并只排除不匹配的项目用于显示是可行的。

在这种情况下,我是否应该完全忘记typeahead,并实现一个带有下拉菜单的自定义解决方案,或者有没有一种方法可以轻松做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-10 23:49:33

有一种方法可以非常容易地实现这一点,不需要推出您的自定义解决方案(至少在这种情况下不是!)。基本上,您可以使用任何函数作为typeaheads表达式的一部分,例如:

代码语言:javascript
复制
<input type="text" ng-model="selected" typeahead="state for state in getStates($viewValue)">

从本例中可以看到,可以调用getStates($viewValue)方法(在作用域上定义),并且$viewValue与用户输入的值相对应。

这里最好的是你的函数可以返回一个promise,并且这个promise将被typeahead正确识别。

不久前,我写了一个示例插件,展示了如何使用服务器端调用来提供自动完成功能。检查显示美国所有城市(基于geobytes.com)的自动补全功能,这些城市是通过JSONP服务实时查询的:

http://plnkr.co/edit/t1neIS?p=preview

有关如何在服务器端进行过滤的工作示例(您至少需要键入3个字符才能看到结果),请查看它。当然,您并不局限于jsonp调用,您可以使用任何返回promise的方法。

票数 119
EN

Stack Overflow用户

发布于 2017-02-14 03:49:24

我没有发表评论的代表,所以发布为答案(抱歉!)

如果您使用的是较新版本的bootstrap,则需要在typeahead前面添加uib- (如下所示)

代码语言:javascript
复制
<input type="text" ng-model="selected" uib-typeahead="state for state in getStates($viewValue)">
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15930339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档