首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用Icenium Kendo UI数据源更新

未调用Icenium Kendo UI数据源更新
EN

Stack Overflow用户
提问于 2013-10-27 00:39:26
回答 1查看 445关注 0票数 0

我是kendo ui的新手,我目前在通过调用update操作让数据源运行用于写入的sync时遇到了问题。

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

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

代码语言:javascript
复制
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!");
        }
    }
});
EN

回答 1

Stack Overflow用户

发布于 2013-10-27 00:39:26

我自己发现了这个问题,问题是如果你没有在数据源上定义一个模式,很明显数据源不能触发更新事件。因此,假设您的对象有一个名为id的主键,您的代码应该类似于此,请参阅添加的schema属性。

代码语言:javascript
复制
dataSource = new kendo.data.DataSource({
        schema: {
           model: { id: "id" }
        },
        transport: {
            read: function (options) {
                try {
       .........................
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19609151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档