场景:我试图调用一个在json中返回结果的webservice,逻辑应该非常直接。
我在WinJS.xhr()
中调用了一个webservice url,添加了一个then函数来处理结果,这里我试图将它绑定到一个列表。
我正在使用下面的内容,但我没有得到任何显示我在这里做错了什么?
有人可以告诉我如何从函数调用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);
答案 0 :(得分:3)
WinJS.Binding.List
的ctor接受列表或数组作为列表的初始内容。您的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
的{{1}}并设置了匹配的WinJS.UI.ListView
属性或渲染功能。