我有两个使用相当大的json对象(1.2mb)的测试用例:
source: data
和
source: function (request, response) {
response(data);
}
在第一种情况下,自动完成功能正如我所料。
在第二种情况下,自动完成功能偶尔会起作用并且非常慢。有时浏览器会在重新释放之前挂起3-4秒“没有响应”。
第二种情况与第一种情况相比发生了什么不同?
(我会在某个时候在这个函数中加入一些过滤逻辑,但是现在我正在测试这个)。
答案 0 :(得分:5)
您的数据集在作为本地对象传递时会被过滤,但在使用回调时不会被过滤(这将是程序员的责任)。
使用source: data
自动填充过滤器为您设置结果集:
response($.ui.autocomplete.filter(array, request.term));
使用回调source: function(request, response) { response(data) }
时,不会应用过滤,因此您的页面会为1.3 MB的json生成标记。
当自动完成从本地源加载数据时,它会缓存数据。远程检索时,默认情况下不缓存。
此jQuery UI自动完成文档解释了该行为,并建议如何为远程调用实现缓存。
http://jqueryui.com/demos/autocomplete/#remote-with-cache
击><击> 撞击>