【问题标题】:Icenium Kendo UI Datasource update not being called未调用 Icenium Kendo UI 数据源更新
【发布时间】:2013-10-26 16:39:26
【问题描述】:

我是 kendo ui 的新手,我目前无法通过调用更新操作使数据源运行同步以进行写入。

我想要完成的是从 json 文件中读取默认数据,如果对数据进行了任何更新,我想将其作为 json 保存到本地存储中。

我能够使读取工作并显示数据,但由于某种原因,我无法使用 dataSource.sync() 触发更新操作 我的代码在这里

dataSource = new kendo.data.DataSource({
    transport: {
        read: function (options) {
            try {
                options.cached = false;
                //window.localStorage.removeItem("data");
                // window.localStorage.clear();
                // window.localStorage.setItem("data", null);
                var data = window.localStorage.getItem("data");

                if (data == null || data == undefined) {
                    console.log("ricarico");
                    data = new Object();


                    jQuery.getJSON("data/live.json", function (items) {
                        data.sections = new kendo.data.ObservableArray([]);
                        for (var i = 0; i < items.length; i++)
                        data.sections.push(new kendo.data.ObservableObject(items[i]));

                        options.success(data.sections);

                        window.localStorage.setItem("data", JSON.stringify(data));
                    });
                } else {
                    data = JSON.parse(data);
                    console.log("items " + data.sections[0].items.length);
                    options.success(data.sections);
                }


            } catch (err) {
                console.log(err.message);
            }
        },

        update: function (options) {
            try {
                console.log("try updated!");
                var data = window.localStorage.getItem("data");
                data.sections = options.data;
                window.localStorage.setItem("data", data);
                var result = getResult(options);
                options.success(result);
                console.log("updated!");
            } catch (err) {
                console.log("livegreen update: " + err.message);
            }
        },
        change: function (options) {
            console.log("change!");
        },
        destroy: function (options) {
            console.log("change!");
        }
    }
});

【问题讨论】:

    标签: jquery json kendo-ui


    【解决方案1】:

    我自己发现了这个问题,问题是如果您没有在数据源上定义架构,显然数据源无法触发更新事件。 所以假设你的对象有一个名为 id 的主键,你的代码应该是这样的,请参阅添加的架构属性。

    dataSource = new kendo.data.DataSource({
            schema: {
               model: { id: "id" }
            },
            transport: {
                read: function (options) {
                    try {
           .........................
    

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多