0

我想连接到 Web 服务并在 WinJS ListView 中显示结果。Web 服务返回 JSON。到目前为止,我有这个标记:

    <div id="mediumListIconTextTemplate" data-win-control="WinJS.Binding.Template">
            <div>
                <h4 data-win-bind="innerText: title"></h4>
            </div>
    </div>

    <div id="basicListView" data-win-control="WinJS.UI.ListView"
        data-win-options="{itemDataSource : DataExample.itemList.dataSource, 
        itemTemplate: select('#mediumListIconTextTemplate')}">
    </div>

这是我认为我需要在 JS 中做的事情:

  • 用于WinJS.xhr从 Web 服务获取 JSON 数据。
  • 从返回的 JSON 创建一个数据元素数组
  • 用于WinJS.Binding.List从数组创建列表

我错过了什么?我在哪里打电话WinJS.Binding.processAll(my_listview, data_list)

4

1 回答 1

3

你不需要打电话WinJS.Binding.processAll(my_listview, data_list).

我将假设您使用的是单页导航模型,因此在页面的就绪事件处理程序中,您将执行以下操作:

var page = WinJS.UI.Pages.define("/pages/home.html", {
        ready: function (element, options) {

            WinJS.xhr({url:'http://someservice.com'}).then(
                function(response) { 
                    var json = JSON.parse(response.responseText);
                    var list = new WinJS.Binding.List(json.results); // or whatever array you are binding too 
                    DataExample.itemList = list; // or however you want to get the list into DataExample.itemList
                },
                function(error) {
                    //handle error 
                }
            );
        }

而已。default.js 将处理整个页面的 processAll(),只需让 WinJS 魔法为您完成工作。

您可以在http://slickthought.net/post/2012/08/20/Windows-8-and-HTML-Part-6-Displaying-Data-with-WinJS-ListView.aspx找到一个简单的示例。您也可以按照此处的 ListView 快速入门http://msdn.microsoft.com/en-us/library/windows/apps/hh465496.aspx

如果您不使用单页模型,那么在 default.js 上的激活处理程序中,您只需在返回的承诺中添加上面的代码即可执行WinJS.UI.processAll()

于 2012-08-28T18:28:26.407 回答