Kendo Observable.toJSON() не возвращает полный объект
У меня есть объект Kendo Observable, который содержит метаданные сайта и папки SharePoint. Я попытался добавить объекты сайта с помощью точечной нотации и предоставленного метода 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(). Конфигурация - мой корень.
Заранее спасибо.
1 ответ
Kendo Observable продолжает обновляться, если значения правильно изменены с помощью set.
Однако, если выполняется преобразование JSON, возвращается простой объект JSON, который больше не является наблюдаемым. Таким образом, любые дальнейшие изменения, сделанные в корне наблюдаемой, не отражаются в этом объекте 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"