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 を使用 (悪用??) するのは適切ですか? 私の最終的な目標は、この関数から残りの検索を開始することです。