1

场景:我正在尝试调用以 json 格式返回结果的 web 服务,逻辑应该非常简单。

我在添加一个 then 函数中调用一个 webservice urlWinJS.xhr()来处理结果,这里我试图将它绑定到一个列表。

我正在使用以下内容,但我没有得到任何显示我在这里做错了什么?

有人可以告诉我如何从函数中调用 winjs.xhr() 并返回一些我可以在下面尝试绑定的对象吗?

    function getData() {
        return WinJS.xhr({ url: "http://search.twitter.com/search.json?q=%23windows8&rpp=10" })
    }    
    function myFunc() {
        getData().then(function (xhr) {
            var jsondata = JSON.parse(xhr.responseText)
            return jsondata;
            // ...do something with the data when it arrives...
        }, function (err) {
            // ...do something with the error
        });
    }     

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

    //var dataList = new WinJS.Binding.List(dataArray);
    var publicMembers =
        {
            itemList: dataList
        };
    WinJS.Namespace.define("DataExample", publicMembers);
4

1 回答 1

3

ctor forWinJS.Binding.List接受列表或数组作为列表的初始内容。您myFunc()将一无所获。您可以使用设置一个空列表

var dataList = new WinJS.Binding.List()

并像现在一样导出它。然后,在声明myFunc()下方dataList,您可以将项目添加到列表中。例如,假设jsondata解析成一个数组:

function myFunc() {
    getData().then(function (xhr) {
        var jsondata = JSON.parse(xhr.responseText)
        jsondata.forEach(function(entry) { dataList.push(entry); });
    }, function (err) {
        // ...do something with the error
    });
}     

编辑:我还假设您已经绑定dataList.dataSourceitemDataSourceaWinJS.UI.ListView并设置了匹配的itemTemplate属性或渲染函数。

于 2013-02-26T11:03:48.930 回答