【问题标题】:Titanium Mobile 3.0 Navigation Controller pass variables between windowsTitanium Mobile 3.0 导航控制器在窗口之间传递变量
【发布时间】:2013-03-02 08:41:51
【问题描述】:

我正在使用 swanify 的 Titanium Navigation Controller https://github.com/swanify/Titanium-Navigation-Controller 用于我在 Android 设备中部署的应用程序。

我正在尝试将从此处的表格行中选择的数据传递回上一页并在那里填充文本字段。

有人知道怎么做吗?我正在研究使用事件,但它似乎对我不起作用。

谢谢。 :)

【问题讨论】:

    标签: titanium titanium-mobile


    【解决方案1】:

    这是我在这种情况下所做的,它利用了 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()。 :)
    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 2013-02-03
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    相关资源
    最近更新 更多