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"
Другие вопросы по тегам