我有一个包含SharePoint站点和文件夹元数据的Kendo Observable对象。我尝试使用点表示法和提供的Observable.set()方法添加网站对象。
它们被添加到对象中,当我检查对象时,新的站点对象确实被添加到Observable中。但是当我调用JSON时,我只获得了在页面加载时创建的初始Observable。
var folder = {
Id: 0,
SharePointSite: site,
RelativeUrl: "",
IsActive: true
};
configuration.Sites[siteIndex] = site;
configuration.Folders[folderIndex] = folder; <- plain JS object
configuration.set(`Sites[${siteIndex}]`, site);
configuration.set(`Folders[${folderIndex}]`, folder); <- creates Observable object
loadPartialView($("#sites"), siteOverviewUrl, configuration.toJSON(), siteOverviewLoaded);
我自己创建文件夹对象,站点对象是从用户提交的表单序列化的。两者都被添加到Observable,在调用configuration.toJSON()之后都不存在。 配置是我的根Observable。
提前谢谢。
答案 0 :(得分:0)
如果使用设置正确修改了值,则Kendo Observable会继续自我更新。
但是,如果执行JSON转换,则返回普通的JSON对象,这不再是可观察的。因此,对根observable所做的任何进一步更改都不会反映到该JSON对象或使用该JSON执行的绑定。
希望此代码段能够提供帮助并查看此demo
var observable = new kendo.data.ObservableObject({ name: "John Doe" });
observable.set("age", "30");
var a = observable.toJSON();
observable.set("height", "6");
console.log("observable", observable); // outputs "Observable"
console.log("json", a); // outputs "JSON"