Я разрабатываю приложение для Windows 8 Store с использованием HTML/JavaScript, и я столкнулся с проблемой хранения и извлечения WinJS.Binding.List в Windows.Storage.ApplicationData .current.roamingSettings.Хранить и извлекать WinJS.Binding.List в данных приложения
Я получил это, чтобы вручную обработать собственный метод преобразования списка привязки в строку XML и сохранить его, а затем при извлечении его анализа в список. Но это кажется сумасшедшим неэффективным, и я пытаюсь найти лучший способ. Я пробовал JSON.stringify() и JSON.parse(), которые, похоже, хранят и извлекают нужные данные, но как только я привязываю данные к winControl, приложение вылетает с 0 (вообще не появляется сообщение об ошибке).
Вот немного моего кода, чтобы продемонстрировать то, что я пытаюсь (список является обязательным список):
function onSaveData() {
if (list) {
Windows.Storage.ApplicationData.current.roamingSettings.values["data"] = JSON.stringify(list);
}
}
function onLoadData() {
var data = Windows.Storage.ApplicationData.current.roamingSettings.values["data"];
if (data) {
list = JSON.parse(data);
var listview = element.querySelector("#mylistview").winControl;
listview.itemsSource = new WinJS.Binding.List(list);
}
}
Я знаю, что могу получить эту работу на долгий путь, так что я не ищу любое решение ... Я действительно надеюсь, что есть простой способ хранить/извлекать эти объекты данных, которые мне не хватает. Если я смогу найти более простой способ сделать это, он устранит около 40 строк кода, и я могу прекратить использовать всю библиотеку. Кроме того, по мере того, как я продвигаюсь вперед, я планирую иметь больше списков привязки, которые также нужно будет сохранить. Благодаря!
Ах. «listview» в моем примере выше - это настраиваемый элемент управления, который обертывает фактический ListView. itemsSource устанавливается фактическим списком и внутренне использует dataSource для установки ListView. Вы ответили на мой вопрос, хотя об экономии и перезагрузке с помощью JSON. Это просто означает, что у меня есть что-то еще. Благодарю. – BrianLegg
Вам нужно убедиться, что ваш сериализованный JSON действительно представляет собой массив, так что он станет массивом JavaScript при его перезагрузке, иначе List не сможет его инициализировать. –