剣道UIオートコンプリートコンポーネントに夢中になっています。jQueryでデータにアクセスするために独自の関数を使用しているため、AutoCompletedataSource.transport.readを関数として設定する必要があります。コードはこんな感じです。
minLengthAtocomplete = 3;
$('#autocomplete').kendoAutoComplete({
minLength : 3,
filter : "contains",
dataValueField : "key",
dataTextField : "value",
dataSource : new kendo.data.DataSource({
transport : {
read : _OnTransportRead
},
schema : {
/* object schema */
}
})
});
function _OnTransportRead(e) {
var text = $.trim(e.data.filter.filters[0].value);
if (text && text.length >= minLengthAtocomplete) {
_GetUsers(
text,
function onSuccess(data) {
var users = [];
/* sets users with info in data */
e.success(users);
},
function onError(error) {
/* stuff with error */
}
);
}
}
function _GetUsers(userName, onSuccess, onError) {
/* Ajax to get users from DB */
}
このコードは完全に実行されますが、 dataSource.transport.readは1回だけ呼び出されます。テキスト「michae」を使用して最初の検索を実行すると、オートコンプリートコンポーネントがそのdataSource.transport.readを期待どおりに実行します。次に、 「michael」を検索するためにもう1文字追加すると、dataSource.transport.readが再度呼び出されることはありません。とてもイライラします!
autoSync dataSourceプロパティ、手動dataSource Syncを使用して、AutoComplete dataBoundに新しいdataSourceオブジェクトを設定しようとしましたが、うまくいきませんでした。
私は何が間違っているのですか?何を忘れているの?
前もって感謝します。