我是kendo ui的新手,我目前在通过调用update操作让数据源运行用于写入的sync时遇到了问题。
我试图完成的是从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!");
}
}
});发布于 2013-10-27 00:39:26
我自己发现了这个问题,问题是如果你没有在数据源上定义一个模式,很明显数据源不能触发更新事件。因此,假设您的对象有一个名为id的主键,您的代码应该类似于此,请参阅添加的schema属性。
dataSource = new kendo.data.DataSource({
schema: {
model: { id: "id" }
},
transport: {
read: function (options) {
try {
.........................https://stackoverflow.com/questions/19609151
复制相似问题