我想在WinJS.UI.ListView中列出我的所有Twitter粉丝。
WinJS.xhr({
url: "https://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=" + twitterusername,
responseType: "json"
}).then(
function (xhr) {
var json = JSON.parse(xhr.responseText);
var a = [];
a = json.ids;
//
// now what next?
//
},
function (error) {
myListView.textContent = error;
}
);
我通过json.ids
获取我的所有推特文件夹ID。
但接下来如何找到他们的屏幕名称和prifile图片和主要的东西如何绑定他们与我的ListView控件。我已将简单的静态数据绑定到ListView中,但对于此示例我不知道。
答案 0 :(得分:0)
您必须再次呼叫api.twitter.com/1/users/show.json?user_id=json.ids[i]
的每个ID。
收到所有回调后,您必须创建一个包含标题,文本和图片属性的对象的数组。之后,只需将其与您的列表绑定即可。
以下代码是一个例子(未经过测试,不知道它是否有效,但它应该指向正确的方向)
var followersCallback = function(xhr){
var json = JSON.parse(xhr.responseText);
var promises = [];
// make promises for each user id (call to twitter to get picture/name/description)
for (var i = 0; i < json.ids.length; i++){
var promise = WinJS.xhr({
url: "https://api.twitter.com/1/users/show.json?user_id=" + json.ids[i],
responseType: "json"
});
promises.push(promise);
}
var dataArray = [];
// join those promises
WinJs.Promise.join(promises)
.then(function(args){
//when you get callback from all those promises
for (var j = 0; j < args.length; j++){
//not sure if parse is needed
args[j]=JSON.parse(args[j].responseText);
//populate your data array
var obj = {};
obj.title = args[j].name;
obj.picture = args[j].profile_image_url;
obj.text = args[j].description;
dataArray.push(obj);
}
//bind your data to the list
var dataList = new WinJS.Binding.List(dataArray);
});
};
WinJS.xhr({
url: "https://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=" + twitterusername,
responseType: "json"
}).then(
followersCallback,
function (error) {
myListView.textContent = error;
}
);