2013-03-05 92 views
1

我有一个绑定到远程传输的Kendo UI自动完成功能,我需要调整它的工作方式并且空白。递增更新Kendo UI自动完成

目前,我在服务器上执行一堆搜索,并将结果集成到JSON响应中,然后将其返回给自动完成的数据源。问题是这可能需要很长时间,我们的应用程序对时间敏感。

我们已经确定哪些搜索是最重要的,并发现1次搜索占所选结果的95%。不过,我仍然需要提供其他搜索的数据。我正在考虑在服务器上启动单独的数据请求,并在它们返回时将它们添加到自动完成功能中。我们的主要搜索返回速度非常快,并将成为列表中的第一项。然后,当其他搜索返回时,我希望它们动态添加到列表中。

我们的应用程序使用了knockout.js,我考虑将数据源作为我们视图模型的一部分,但是从环顾四周,Kendo不会根据您的观察对象的更改进行更新。

我目前难住,任何建议都会受到欢迎。

编辑:

我一直在尝试,并取得了一些成功模拟我想要什么用以下数据源:

var dataSource = new kendo.data.DataSource({ 
transport: { 
    read: { 
     url: window.performLookupUrl, 
     data: function() { 
      return { 
       param1: $("#Input").val() 
      }; 
     } 
    }, 
    parameterMap: function (options) { 
     return { 
      param1: options.param1 
     }; 
    } 
}, 
serverFiltering: true, 
serverPaging: true, 
requestEnd: function (e) { 
    if (e.type == "read") { 
     window.setTimeout(function() { 
      dataSource.add({ Name: "testin1234", Id: "X1234" }) 
     }, 2000); 
    } 
} 
}); 

如果第一搜索返回的结果,在2秒钟后,一个新的项目弹出列表中。但是,如果第一次搜索失败,则不会发生任何事情。使用(滥用)requestEnd是否合适?我最终的目标是从这个功能开始其余的搜索。

+0

第一次搜索如何失败?是否有任何JavaScript错误或返回错误状态码?这听起来像你分享应该工作正常 – 2013-03-05 19:16:48

+0

我猜搜索不会失败。如果没有返回搜索结果或空的JSON响应,则不会显示自动完成。 – xocomil 2013-03-05 19:32:58

回答