【问题标题】:Databinding to Windows 8 ListView数据绑定到 Windows 8 ListView
【发布时间】:2012-12-14 14:39:07
【问题描述】:

我在使用 Javascript 将数据绑定到 Windows 8 应用程序中的 ListView 时遇到大量问题。

在 default.js 上的“激活”事件中,我编写了一些代码来从 Web 服务获取一些数据并将其推送到数组中。此位工作正常,数组已填充。

我遇到的问题是应用程序无法识别数据。我在名为inspections.html 的页面中有这段代码:

data-win-options="{itemTemplate: select('#imageTextListCollectionTemplate'),
                                itemDataSource: dataList.dataSource,
                                layout: {type: WinJS.UI.ListLayout}}

然后在“激活”事件中我声明:

var dataList = new Array();

并将来自网络服务的数据推送到这个数组中。但在运行时,我收到一条错误消息,类似于“无法在未定义的数据列表上找到数据源”。

我在 MS 网站上做了一些示例,其中一个示例创建了一个虚拟数据集并从命名空间引用它。我有点认为我在这里也缺少一个命名空间,但我不知道 default.js 的命名空间是什么。或者也许我错了,这是完全不同的东西。

请帮忙 - 这是非常基本的(应该很容易),但我无法理解它。

【问题讨论】:

  • 我不知道 JS Metro 的语法,但您的语法看起来是错误的——如果 dataListArray,那么它不会包含 dataSource 属性。 . 是吗?

标签: javascript html windows data-binding microsoft-metro


【解决方案1】:

你想用 HTML 还是 javascript 创建数据列表?

您似乎想从 JavaScript 创建它。假设您已经将数据从您的网络服务推送到数组中,您只需要调用:

var dataList = new WinJS.Binding.List(array);

现在访问dataList.dataSource 完全有效。

此外,要创建数据列表,您并不总是需要数组。您可能会从一个空列表开始,然后继续从 Web 服务将数据直接插入数据列表中,例如:

var dataList = new WinJS.Binding.List([]);
dataList.push(value1);
dataList.push(value2);

...

希望对您有所帮助。如果您还有其他问题,请告诉我。

【讨论】:

    【解决方案2】:

    如果您在 HTML 端分配数据源时遇到麻烦

    喜欢js端喜欢

     var list = new WinJS.Binding.List(array here);
     listView.itemDataSource = list.dataSource;
    

    通过使用它,您可以轻松浏览您绑定到 ListView 的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多