嗨,我遵循这一指导我的项目 https://material.angularjs.org/latest/demo/autocomplete和 https://www.tutorialspoint.com/angular_material/angular_material_autocomplete.htm角料自动完成增强
的例子他们第一次加载状态搜索的状态。然后你可以搜索这个状态这是一个很好的例子。
在我的情况怎么样,当你搜索一个名字,确实是6K名或更多,这是加载,使我的网站更慢
一个很大的问题,所以我给它一个尝试创建自己的。搜索时获得资源,这就是我出来的。
这里是我的看法(超薄格式)
div layout="row"
md-autocomplete md-item-text="item.name" md-selected-item-change="ctrl.selectedItemChange(item)" md-items="item in ctrl.getMatches(searchText)" md-no-cache="true" md-search-text="searchText" md-selected-item="item" md-floating-label="Client Name" flex=""
md-item-template
span md-highlight-flags="^i" md-highlight-text="searchText"
| {{item.name}}
我控制器(咖啡格式)
@getMatches = (searchText) =>
deferred = $q.defer()
if searchText.length >= 2
name = searchText
test = Client::Search.query {name: name}, (data) =>
states = data.clients
if states.length == 0
name = searchText + "*"
test = Client::Search.query {name: name}, (data) =>
states = data.clients
$timeout (=>
deferred.resolve states
return
), 1000
deferred.promise
else
test = []
,当我在我的搜索获得超过2个字母我的资源将是触发,并开始搜索。我的问题,如果我搜索长词我的网络会变慢。
附加的: 当我输入每个字母时,我的服务器端会回应如果我输入uni(对于大学)单词uni将到达我的服务器端并响应等等,然后当我完成单词“大学”我有这么多的资源,使我放慢
任何想法如何能INHANCE这个多快???
这个6k名字是来自服务器端吗? (数据库?) –
是的,这是过程类型>生成查询如果为真>查询到api,然后将获得给定名称的ID – wiwit
那么为什么你不尝试通过使用ajax调用搜索? –