使用 photo_id 从 ACS 获取 post 个对象
Getting post objects from ACS with photo_id
我正在开发一个从 ACS(post 对象)获取数据的应用程序。
在我的应用程序中有一个按钮,当用户单击该按钮时,它会获得 posts 数据。
在每个 post 中还有一个 photo_id,它允许我从云端获取照片 url。
但是有一个问题,它有一个回调函数,当回调发生的时候已经来不及了。
无论如何,下面的代码只显示最后一个 post 有照片,第一个 post 没有照片。
(目前只有 2 个 post 个对象)。
我认为问题出在回调中,但我似乎无法修复它。
希望大家能帮帮我,先谢谢了!
这是我的代码:
function getCarsClick() {
Cloud.Posts.query({
page: 1,
per_page: 20
}, function (e) {
if (e.success) {
var tableData = [];
for (var i = 0; i < e.posts.length; i++) {
var post = e.posts[i];
var row = Titanium.UI.createTableViewRow();
var title = Titanium.UI.createLabel({
text:post.title,
font:{fontSize:18,fontWeight:'bold'},
color:'#ef349d',
width:'auto',
textAlign:'left',
top:2,
left:40,
height:30
});
var subtitle = Titanium.UI.createLabel({
text:post.content,
font:{fontSize:12,fontWeight:'normal'},
color:'#000000',
width:'auto',
textAlign:'left',
bottom:10,
left:60,
height:32
});
row.add(title);
row.add(subtitle);
row.hasChild=true;
row.height = 80;
row.selectedBackgroundColor = '#ef349d';
Cloud.Photos.show({
photo_id: post.photo_id
}, function (e) {
if (e.success) {
var photo = e.photos[0];
var img1 = Ti.UI.createImageView({image:photo.urls.square_75,width:30,height:30,left:2, top:2});
row.add(img1);
} else {
alert('Error:\n' +
((e.error && e.message) || JSON.stringify(e)));
}
});
tableData.push(row);
}
//add table data
$.tableview1.setData(tableData);
} else {
alert('Error:\n' +
((e.error && e.message) || JSON.stringify(e)));
}
});
}
如果您使用提供的默认参数将照片传递给 post,图像应该默认返回,不需要您进行额外的 API 调用来获取照片。
如果您刚开始使用 Alloy 我也建议您,更重要的是使用 ListViews 而不是 TableView
我正在开发一个从 ACS(post 对象)获取数据的应用程序。 在我的应用程序中有一个按钮,当用户单击该按钮时,它会获得 posts 数据。 在每个 post 中还有一个 photo_id,它允许我从云端获取照片 url。 但是有一个问题,它有一个回调函数,当回调发生的时候已经来不及了。
无论如何,下面的代码只显示最后一个 post 有照片,第一个 post 没有照片。 (目前只有 2 个 post 个对象)。
我认为问题出在回调中,但我似乎无法修复它。
希望大家能帮帮我,先谢谢了!
这是我的代码:
function getCarsClick() {
Cloud.Posts.query({
page: 1,
per_page: 20
}, function (e) {
if (e.success) {
var tableData = [];
for (var i = 0; i < e.posts.length; i++) {
var post = e.posts[i];
var row = Titanium.UI.createTableViewRow();
var title = Titanium.UI.createLabel({
text:post.title,
font:{fontSize:18,fontWeight:'bold'},
color:'#ef349d',
width:'auto',
textAlign:'left',
top:2,
left:40,
height:30
});
var subtitle = Titanium.UI.createLabel({
text:post.content,
font:{fontSize:12,fontWeight:'normal'},
color:'#000000',
width:'auto',
textAlign:'left',
bottom:10,
left:60,
height:32
});
row.add(title);
row.add(subtitle);
row.hasChild=true;
row.height = 80;
row.selectedBackgroundColor = '#ef349d';
Cloud.Photos.show({
photo_id: post.photo_id
}, function (e) {
if (e.success) {
var photo = e.photos[0];
var img1 = Ti.UI.createImageView({image:photo.urls.square_75,width:30,height:30,left:2, top:2});
row.add(img1);
} else {
alert('Error:\n' +
((e.error && e.message) || JSON.stringify(e)));
}
});
tableData.push(row);
}
//add table data
$.tableview1.setData(tableData);
} else {
alert('Error:\n' +
((e.error && e.message) || JSON.stringify(e)));
}
});
}
如果您使用提供的默认参数将照片传递给 post,图像应该默认返回,不需要您进行额外的 API 调用来获取照片。
如果您刚开始使用 Alloy 我也建议您,更重要的是使用 ListViews 而不是 TableView