1

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

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

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

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

我现在很困惑,任何建议都会受到欢迎。

编辑:

我一直在试验,并在使用以下数据源模拟我想要的东西时取得了一些成功:

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 是否合适?我的最终目标是从此功能开始其余的搜索。

4

1 回答 1

0

我联系了 Telerik,他们给了我以下 jsbin,我可以对其进行修改以满足我的需要。

http://jsbin.com/ezucuk/5/edit

于 2013-03-12T16:58:26.180 回答