【发布时间】:2013-03-02 08:41:51
【问题描述】:
我正在使用 swanify 的 Titanium Navigation Controller https://github.com/swanify/Titanium-Navigation-Controller 用于我在 Android 设备中部署的应用程序。
我正在尝试将从此处的表格行中选择的数据传递回上一页并在那里填充文本字段。
有人知道怎么做吗?我正在研究使用事件,但它似乎对我不起作用。
谢谢。 :)
【问题讨论】:
我正在使用 swanify 的 Titanium Navigation Controller https://github.com/swanify/Titanium-Navigation-Controller 用于我在 Android 设备中部署的应用程序。
我正在尝试将从此处的表格行中选择的数据传递回上一页并在那里填充文本字段。
有人知道怎么做吗?我正在研究使用事件,但它似乎对我不起作用。
谢谢。 :)
【问题讨论】:
这是我在这种情况下所做的,它利用了 JavaScript 和 Titanium 的事件方面,一般原则是拥有自己的自定义事件,在控件上触发它们,然后在其他地方监听。
首先假设我们有一个名为NextWindow.js 的文件,它是一个封装了一个窗口和一个tableview 的CommonJS 模块,每次单击一行时,我们都会捕获该事件,然后在窗口上触发我们自己的自定义事件 /em>:
function NextWindow() {
var self = Ti.UI.createWindow();
var tableView = Ti.UI.createTableView();
// Other initialization
....
....
tableView.addEventListener('click', function(e) {
// You may have to use e.rowData.title depending on how you created the table view
var rowTitle = e.row.title;
// Now fire a custom event on the window whenever a row is selected
// send the title through as data
self.fireEvent('table_row_selected', {title : rowTitle});
});
return self;
}
module.exports = NextWindow;
当您创建 NextWindow 以推送到导航堆栈时,向其添加自定义事件的侦听器,这是在带有文本框的前一个窗口内:
var NextWindow = require('NextWindow');
var nextWindow = new NextWindow();
nextWindow.addEventListener('table_row_selected', function(e) {
// Do what you want here with the passed back data
var title = e.title;
some_label.text = title;
});
// Open the next window on the NavigationController stack
nav.open(nextWindow);
现在正在侦听附加到 nextWindow 的自定义事件。假设您的 nextWindow 中有一个 TableView,监听 TableView 点击,并触发自定义事件:
【讨论】:
self.close()。 :)