未绑定到任何控件时的KendoUI数据源

时间:2014-01-30 12:11:36

标签: javascript api kendo-ui datasource

我在几个地方使用了一个KendoUI数据源,有些则必然会控制其他地方。这个调用是针对一个远程Web服务的,并且可能非常昂贵,我试图先执行它。

我第一次需要数据的情况是它没有绑定到控件。

I call a function similar to this to create the datasouce:

function BuildDS() {
    var DS = new kendo.data.DataSource({
        transport: {
            read: {
                url: "../WS/GetData",
                dataType: 'json',
                contentType: "application/json; charset=utf-8",
                type: "POST"
            }
        }
    });

    return DS;
}

然后我有另一个迭代DS的函数。

function GetName(DSIn, fieldID) {

    DSIn.read();

    var visname = "";
    $.each(DSIn.data(), function (idx, vis) {
        if (vis.FIELD_ID == fieldID) {
            visname = vis.DISPLAY_LABEL;
            return false;
        }
    });
    return visname;
}

我可以看到正在调用远程Web服务并按预期返回数据。但是,DS的data()属性始终不返回任何数据。

当我将相同的数据源绑定到Kendo控件时,数据将填充在DS上。

1 个答案:

答案 0 :(得分:1)

从服务器检索数据是异步操作,因此当您进行迭代时,此调用尚未完成。您应该使用fetch代替:

dataSource.fetch(function(){
  var data = this.data();
  console.log(data.length); 

  // now you can iterate over data
});