【发布时间】:2013-12-04 23:54:40
【问题描述】:
我是 Titanium 和 Web 开发的新手。我正在尝试检索我在 ACS 上创建和存储的自定义对象。我花了几个小时在上面,因为我不知道如何从云中正确检索一组数据字段而陷入困境。我的代码可以编译,但表格视图没有显示。我只看到标题和后退按钮。我相信错误在“Cloud.Objects.Query”块内(它应该显示 4 个条目,每个条目都有一个日期、地点和评论),但我没有看到它们。我尝试使用警报,但我不断收到的警报消息之一是“变量未定义”。有人可以看看并给我一些提示吗?感谢您的宝贵时间。
//Import the module
var Cloud = require('ti.cloud');
Cloud.debug = true; // optional; if you add this line, set it to false for production
// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor('#000');
exports.getDiaryWin = function() {
//create window
var diary_window = Titanium.UI.createWindow({
backgroundColor:'#FFF',
title: "Travel Diary"
});
//create title
var title = Titanium.UI.createLabel({
text: "My Travel Diary",
top:10,
color: '#008000',
textAlign: 'center',
font: {fontSize:55}
});
var tableView = Ti.UI.createTableView({
top: '10%',
scrollable: true,
width: '100%',
minRowHeight: '50',
bottom: '10%'
});
//Get diary entries, add them to the table view and display it
var idList = [];
var tableData = [];
var displayData = [];
var entry;
//Get diary id
Cloud.Objects.query({
classname: 'diaries',
page: 1,
per_page: 10
},function(e){
if (e.success){
alert('Count: '+e.diaries.length);
for (var i=0; i<e.diaries.length; i++)
{
entry = e.diaries[i];
/*
alert('id: ' + entry.id + '\n' +
'date: ' + entry.date + '\n' +
'place: ' + entry.place + '\n' +
'review: ' + entry.review + '\n' +
'created_at: ' + entry.created_at);
*/
tableData.push({
date: entry.date,
place: entry.place,
review: entry.review
});
alert('tableData:' + tableData.date); //ALERT: tableData: UNDEFINED
}
} else {
alert('Error:\n' + ((e.error && e.message) || JSON.stringify(e)));
}
});
/*
tableData.push({
date: 'Can u see this?'
});
*/
for (var i=0; i < tableData.length; i++){
var row = Ti.UI.createTableViewRow({
height:150,
backgroundColor : '#FF9900',
font: {fontSize:35},
title: tableData[i].date
});
/*
var dateField = Ti.UI.createLabel({
text:tableData[i].date,
font: {fontSize:35},
color:'#888',
left:5,
width:Ti.UI.FILL
});
row.add(dateLabel);
var placeLabel = Ti.UI.createLabel({
text:tableData[i].place,
font: {fontSize:35},
color:'#888', left:5, width:Ti.UI.FILL
});
row.add(placeLabel);
var reviewLabel = Ti.UI.createLabel({
text:tableData[i].review,
font: {fontSize:35},
color:'#888',
left:5,
width:Ti.UI.FILL
});
row.add(reviewLabel);
*/
displayData.push(row);
}
tableView.setData(displayData);
//add a 'back' button
var back_button = Titanium.UI.createButton({
title: "Back",
buttom:20,
height:200,
left:40,
right:40
});
//Add Event Listener
back_button.addEventListener('click', function(){
//call an export function
var win = require('home').getHomeWin;
//create new instance
var nextWin = new win();
nextWin.open();
});
diary_window.add(title);
diary_window.add(tableView);
diary_window.add(back_button);
return diary_window;
};
------------编辑的代码 --------------
//Import the module
var Cloud = require('ti.cloud');
Cloud.debug = true; // optional; if you add this line, set it to false for production
// this sets the background color of the master UIView (when there are no windows/tab groups on it)
Titanium.UI.setBackgroundColor('#000');
exports.getDiaryWin = function() {
//create window
var diary_window = Titanium.UI.createWindow({
backgroundColor:'#FFF',
title: "Travel Diary"
});
//create title
var title = Titanium.UI.createLabel({
text: "My Travel Diary",
top:10,
color: '#008000',
textAlign: 'center',
font: {fontSize:55}
});
var tableView = Ti.UI.createTableView({
top: '10%',
scrollable: true,
width: '100%',
minRowHeight: '50',
bottom: '10%'
});
//Get diary entries, add them to the table view and display it
var idList = [];
var tableData = [];
var displayData = [];
var entry;
//Get diary id
Cloud.Objects.query({
classname: 'diaries',
page: 1,
per_page: 10
}, function(e) {
var row, dateLabel, placeLabel, reviewLabel;
var displayData = [];
if (e.success){
alert('Count: '+e.diaries.length);
for (var i=0; i<e.diaries.length; i++) {
entry = e.diaries[i];
row = Ti.UI.createTableViewRow({
height:150,
backgroundColor : '#FF9900',
font: {fontSize:35},
title: entry.date
});
dateLabel = Ti.UI.createLabel({
text: entry.date,
font: {fontSize:35},
color:'#888',
left:5,
width:Ti.UI.FILL
});
row.add(dateLabel);
placeLabel = Ti.UI.createLabel({
text: entry.place,
font: {fontSize:35},
color:'#888', left:5, width:Ti.UI.FILL
});
row.add(placeLabel);
reviewLabel = Ti.UI.createLabel({
text: entry.review,
font: {fontSize:35},
color:'#888',
left:5,
width:Ti.UI.FILL
});
row.add(reviewLabel);
displayData.push(row);
}
tableView.setData(displayData);
} else {
alert('Error:\n' + ((e.error && e.message) || JSON.stringify(e)));
}
});
//add a 'back' button
var back_button = Titanium.UI.createButton({
title: "Back",
buttom:20,
height:200,
left:40,
right:40
});
//Add Event Listener
back_button.addEventListener('click', function(){
//call an export function
var win = require('home').getHomeWin;
//create new instance
var nextWin = new win();
nextWin.open();
});
diary_window.add(title);
diary_window.add(tableView);
diary_window.add(back_button);
return diary_window;
};
【问题讨论】:
-
能否粘贴完整的错误消息,包括出现的行号?
-
@daniula:很抱歉造成混乱。我不确定这是否真的是一条错误消息。它来自 Cloud.Objects.Query 块中的警报之一 (alert('tableData:' + tableData.date);)。
-
好的,现在我知道发生了什么。在下面检查我的答案:)
标签: javascript android titanium cloud titanium-mobile