我有一个绑定到远程传输的 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 是否合适?我的最终目标是从此功能开始其余的搜索。