Kendo UI AutoComplete数据源传输只读取一次

ver*_*ida 13 datasource autocomplete transport kendo-ui

我对Kendo UI AutoComplete组件感到疯狂.我正在使用自己的函数来使用jQuery访问数据,因此我必须将AutoComplete dataSource.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 */
}
Run Code Online (Sandbox Code Playgroud)

此代码运行完美,但dataSource.transport.read只调用一次.我首先搜索文本'michae',AutoComplete组件按预期运行其dataSource.transport.read.然后,我再添加一个字母来搜索'michael',而dataSource.transport.read永远不再被调用.太令人沮丧了!

我尝试使用autoSync dataSource属性,手动dataSource Sync,在AutoComplete dataBound上设置新的dataSource对象,但没有运气.

我究竟做错了什么?我忘记了什么?

提前致谢.

Ata*_*hev 25

您应该启用serverFiltering,以便数据源每次都发出请求.

$('#autocomplete').kendoAutoComplete({
    minLength : 3,
    filter : "contains",
    dataValueField : "key",
    dataTextField : "value",
    dataSource : new kendo.data.DataSource({,
        serverFiltering: true, 
        transport : {
            read : _OnTransportRead
        },
        schema : {
            /* object schema */
        }
    })
});
Run Code Online (Sandbox Code Playgroud)