Angularjs 如何连接角度ui';通过$http为服务器端优化键入服务器?

Angularjs 如何连接角度ui';通过$http为服务器端优化键入服务器?,angularjs,angular-ui,Angularjs,Angular Ui,typeahead示例()提到在这个自动完成中实现后端很容易,但没有提供示例。我特别感兴趣的是找出当前输入的字符串,这样我就可以将其发送到服务器并返回一个已过滤的结果-我想在服务器端进行此优化,并最小化我的查询,我认为,对于数据库中有超过200000个条目的应用程序来说,返回整个结果集并排除不匹配的项以供显示是不可行的 在这种情况下,我应该完全忘记typeahead并使用下拉菜单实现自定义解决方案,还是有一种方法可以轻松实现这一点?有一种方法可以非常轻松地实现这一点,无需推出自定义解决方案(至少

typeahead示例()提到在这个自动完成中实现后端很容易,但没有提供示例。我特别感兴趣的是找出当前输入的字符串,这样我就可以将其发送到服务器并返回一个已过滤的结果-我想在服务器端进行此优化,并最小化我的查询,我认为,对于数据库中有超过200000个条目的应用程序来说,返回整个结果集并排除不匹配的项以供显示是不可行的


在这种情况下,我应该完全忘记typeahead并使用下拉菜单实现自定义解决方案,还是有一种方法可以轻松实现这一点?

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

<input type="text" ng-model="selected" typeahead="state for state in getStates($viewValue)">

从本例中可以看到,可以调用
getStates($viewValue)
方法(在范围上定义),并且
$viewValue
对应于用户输入的值

这里最棒的是,您的函数可以返回一个承诺,并且这个承诺将被typeahead正确识别

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


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

没有代表发表评论,因此发布作为答复(抱歉!)

如果您使用的是较新版本的引导,则需要在typeahead前面添加uib(类似这样)



Sweet!马哈洛。语法“stateforstatein”对我来说仍然没有意义,但它工作得很好。你能用$http和success方法举个例子吗?我有问题,一整天都没有解决。用
替换成功方法。然后(函数(响应){return response.data;})
有没有办法防止结果在键入时闪烁?@gabriesyme您在这里提到的闪烁问题在0.7.0中得到了修复(刚刚发布!)。将函数绑定到angular ui的typeahead会导致性能问题。()开发的QuantumUI select有一个很好的替代方案
<input type="text" ng-model="selected" uib-typeahead="state for state in getStates($viewValue)">