AppSettings からデータを取得し、それらのデータを ListView にバインドする Windows ストア アプリ/メトロ UI アプリに取り組んでいます。これはdata.jsのコードです
(function () {
"use strict";
var dataSource = new Array();
var dataList = new WinJS.Binding.List();
var appData = Windows.Storage.ApplicationData.current;
var roamingSettings = appData.localSettings;
var json = roamingSettings.values["reminderList"];
if (json != undefined) {
dataSource = JSON.parse(json);
for (var i in dataSource) {
var rem = dataSource[i];
dataList.push(rem);
}
}
// Create a namespace to make the data publicly
// accessible.
var publicMembers =
{
itemList: dataList
};
WinJS.Namespace.define("MyData", publicMembers);
})();
そして、これは私が使用した ListView のコードです。
<div id="basicListView" data-win-control="WinJS.UI.ListView"
data-win-options="{ itemDataSource : MyData.itemList.dataSource, itemTemplate:select('#mediumListIconTextTemplate') }">
ただし、ストレージに 1 つの項目がある場合、ListViewでは未定義として表示されます。また、AppSettings に複数の項目がある場合、以下のエラーが表示されます。
{
"exception": null,
"error": [
[{
"description": "Out of stack space",
"number": -2146828260,
"stack": "Error: Out of stack space\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)"
}]
],
"promise": {
"_oncancel": null,
"_nextState": null,
"_state": {
"name": "error",
"done": null,
"then": null
},
"_listeners": null,
"_value": [
[{
"description": "Out of stack space",
"number": -2146828260,
"stack": "Error: Out of stack space\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)\n at getProperty (ms-appx://microsoft.winjs.1.0/js/base.js:8283:13)\n at get (ms-appx://microsoft.winjs.1.0/js/base.js:8566:36)"
}]
],
"_isException": false,
"_errorId": 7
},
"id": 7
}
誰でも解決策を教えてください。