Autocomplete 增量更新剑道UI自动完成

Autocomplete 增量更新剑道UI自动完成,autocomplete,knockout.js,kendo-ui,Autocomplete,Knockout.js,Kendo Ui,我有一个剑道用户界面自动完成绑定到一个远程传输,我需要调整它的工作方式,而现在是空白 目前,我在服务器上执行了一系列搜索,并将结果集成到JSON响应中,然后将其返回到数据源以进行自动完成。问题是这可能需要很长时间,而且我们的应用程序对时间很敏感 我们已经确定了哪些搜索是最重要的,并发现1个搜索占所选结果的95%。但是,我仍然需要提供来自其他搜索的数据。我正在考虑在服务器上启动单独的数据请求,并在返回时添加自动完成。我们的主搜索返回速度非常快,将是第一个添加到列表中的项目。然后,当其他搜索返回时,

我有一个剑道用户界面自动完成绑定到一个远程传输,我需要调整它的工作方式,而现在是空白

目前,我在服务器上执行了一系列搜索,并将结果集成到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合适吗?我的最终目标是从这个函数开始其余的搜索。

我联系了Telerik,他们给了我以下jsbin,我可以修改它以满足我的需要


第一次搜索如何失败?是否存在任何JavaScript错误或返回了错误状态代码?听起来你分享的东西应该很有效,我想搜索并没有失败。如果没有搜索结果或返回空JSON响应,则不会显示自动完成。