0

我有一个包含 SharePoint 站点和文件夹元数据的 Kendo Observable 对象。我尝试使用点符号和提供的 Observable.set() 方法添加站点对象。

它们被添加到对象中,当我检查对象时,新站点对象确实被添加到 Observable 中。但是当我调用 toJSON 时,我只会得到在页面加载时创建的初始 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。

先感谢您。

4

1 回答 1

0

如果使用set正确修改了值,则 Kendo Observable 会继续自我更新。

但是,如果执行 JSON 转换,则返回纯 JSON 对象,这不再是可观察的。因此,对根 observable 所做的任何进一步更改都不会反映到该 JSON 对象或使用该 JSON 执行的绑定。

希望此代码段将有所帮助并查看此演示

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"
于 2017-09-08T11:10:41.750 回答