【问题标题】:Windows Store Apps/ Metro Apps : ListView data binding errorWindows 应用商店应用程序/ Metro 应用程序:ListView 数据绑定错误
【发布时间】:2012-10-11 07:19:29
【问题描述】:

我正在开发 Windows Store App/Metro UI 应用程序,它从 AppSettings 获取数据并将这些数据绑定到 ListView。 这是 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') }">

但是当存储中有一项时,它在ListView中显示为undefined。 当 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
}

谁能给我一个解决方案。

【问题讨论】:

    标签: javascript microsoft-metro windows-store-apps windows-store


    【解决方案1】:

    您的模板mediumListIconTextTemplate 的外观如何?它是否与您用于构建数据列表的 JSON 对象匹配?我怀疑是。

    另外,当您说引发错误时,您能否也提供堆栈跟踪?

    如果您发布示例 JSON 以及 mediumListIconTextTemplate 的定义,这将有助于分析问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多