在下面的代码中,fetch() 和sync() 方法没有执行任何操作。 我试图查看 localStorage 中的数据如何更新,并且方法没有更新它(示例 LS 字符串在代码中) 我哪里出错了?
function makeWorkingLS(collDesc, projDesc, Id, Description, ElapsedSeconds, ElapsedTime, WorkItemType){
//Create observable object from params
var activeTaskObject = kendo.observable ({
client: collDesc,
project: projDesc,
taskId: Id,
description: Description,
elapsedSeconds: ElapsedSeconds,
elapsedTime: ElapsedTime,
comment: WorkItemType
});
// example string in localStorage:
//{"client":"Morken Mindy","project":"Shazbat creation engine","taskId":183,"description":"Create the Shazbat 100% efficiency engine","elapsedSeconds":296803,"elapsedTime":"82h43m","comment":"Task"}
// Convert to JSON string for localStorage
var activeTask = JSON.stringify(activeTaskObject);
console.info(activeTask);
//Write to localStorage
window.localStorage.setItem("activeTask",activeTask);
//Set it as the active datasource for updating to webservice
var activeTaskDS = new kendo.data.DataSource({
transport: {
read: function(options){
taskItem = JSON.parse(localStorage["activeTask"]);
},
update: {
url: remUpd, //url var declared earlier in the process
dataType: "json"
}
},
schema: {
model: {
client: "client",
taskId: "taskId"
},
data: function(){
return taskItem;
}
}
});
activeTaskDS.fetch(function(){
activeTaskDS.data()[0].set("client", "NOBODY");
activeTaskDS.sync();
cosole.log("activeTaskDS.data()[0] : "+activeTaskDS.data()[0]); //should read 'NOBODY' but reads 'Morken Mindy'
});
}
提前致谢, 尼尔。
最佳答案
我不确定到底是什么问题,但我必须指出一些重要的事情:
据我所知,当您自定义任何
transport
方法时,您必须将数据传递到options
对象中的回调中:transport: { read: function(options){ taskItem = JSON.parse(localStorage["activeTask"]); // Tells the widget to handle that collection options.success(taskItem); } }
在
schema.data
中,您似乎想通过此方法传递数据(如果我错了,请纠正我)。但这个方法并不是为了这个目的。它仅用于告诉小部件要读取哪个字段(在向其传递字符串的情况下)或从响应中读取属性,该属性作为您未使用的参数提供。检查第二个示例 here 。因此,这可能不是将taskItem
对象读取为数据的正确方法;谈到
taskItem
对象,它似乎是您的数据源的基础数据,但它尚未定义(至少在您发布的代码片段上)。我的意思是,如果您按照步骤 1 进行操作,您甚至不需要再读取该对象。
请告诉我这是否有帮助以及您是否需要更多信息。
关于javascript - Kendo UI 数据源sync() 将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29628655/