1

シナリオ: jsonで結果を返すWebサービスを呼び出そうとしていますが、ロジックは非常に単純である必要があります。

結果を処理するためにthen関数を追加してWebサービスのURLを呼び出しますWinJS.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.dataSourceし、一致するプロパティまたはレンダリング関数を設定しitemDataSourceたと仮定します。WinJS.UI.ListViewitemTemplate

于 2013-02-26T11:03:48.930 に答える