0

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
}

誰でも解決策を教えてください。

4

1 に答える 1

0

テンプレートはmediumListIconTextTemplateどのように見えますか? データ リストの作成に使用する JSON オブジェクトと一致しますか? 私はそれを疑います。

また、エラーが発生したとのことですが、スタックトレースも教えていただけないでしょうか?

サンプルの JSON と の定義を投稿すると、問題を分析するのに役立ちますmediumListIconTextTemplate

于 2012-10-21T13:08:06.287 に答える