当我在app.js中拥有所有这些代码时,我已经完成了所有工作,但是因为我将函数和窗口移动到他们自己的单独文件中,所以我很适合。
在main_Window.js中,我打开主窗口时设置一个事件监听器来运行一个函数并返回表数据。我知道该函数正在获取数据,因为我可以在控制台中将其打印出来,但它并没有将它传回我的事件监听器。
loadFeed.js的片段:
//gets data and builds table rows
//I can see this in the console
Ti.API.info('tableData: ' + JSON.stringify(rowData));
//but it's not getting returned to my variable
//in main_Window.js
return rowData;
主片段_Window.js
var newsFeed = require('loadFeed');
win.addEventListener("open",function(){
var tableData = newsFeed.loadFeed();
//now the console says that tableData is undefined
Ti.API.info('tableData: ' + JSON.stringify(tableData));
tableView.setData(tableData);
});
app.js
Titanium.UI.setBackgroundColor('#000');
var be_url = 'http://192.168.1.200:10080';
//later we will get these values from user input
var usr_email = 'user1@wordout.tv';
var usr_password = 'fake_password';
//set from authenticate.js
var usr_session;
//create the main window below
var mainWin = Ti.UI.createWindow({
title: 'Main Window',
width: Ti.UI.Fill,
height: Ti.UI.Fill,
backgroundColor: '#fff',
navBarHidden: 'true',
url: 'ui/common/main_Window.js'
});
//validating email and password.
//Storing userid in session and returning sessionid for future data calls.
//opens mainWin when successfully authenticated
var authorize = require('ui/common/authenticate');
authorize();
答案 0 :(得分:0)
您应该执行以下操作:
修改你的loadFeed函数以接受回调并在回调中执行:
tableView.setData(tableData);
您正面临一个非常常见的问题,您(将)使用的ajax请求是异步请求。 因此控件不会等到你从服务器收到值。相反它首先执行return语句。对于使用commonjs方法,你必须在模块中添加一个回调,以便在从服务器接收数据时更新值。
你必须在onload函数中调用你的回调。