Commonjs - 在 Appcelerator 中使用 Titanium 将数据从一个窗口移动到另一个窗口

Posted

技术标签:

【中文标题】Commonjs - 在 Appcelerator 中使用 Titanium 将数据从一个窗口移动到另一个窗口【英文标题】:Commonjs - Moving data from one window to another using Titanium in Appcelerator 【发布时间】:2019-02-09 19:21:48 【问题描述】:

当使用require() 在该页面上按下按钮时,我正在尝试从主窗口传递数据,如下所示:

mapview.addEventListener('click', function(evt) 
    var detailWindow = Ti.UI.createWindow(
            backgroundColor: '#333333',
            navTintColor: '#FFF',
            barColor: '#222222',
            itemID: evt.annotation.myid
        );
        Ti.API.info('detailWindow.itemID = ' + detailWindow.itemID); 
        // displays expected value from database eg 12345

        detailWindow = require('ui/iphone/detail');
        var detailWin = new myWindowHere(detailWindow.itemID);

详细.js:

function myWindowHere(myItemID) 
    var myDetailsWin = Titanium.UI.createWindow(
    //properties here
    );
    Ti.API.info('myItemID = ' + myItemID); // this log is never 
    var facilityID = myItemID;

    myWindowHere.open();

    return myDetailsWin;
;
module.exports = myWindowHere;  

但是,我在某个地方出错了,因为我收到了错误消息:Can't find variable: myItemID

请帮忙!非常感谢

【问题讨论】:

您在detailWindow 中创建一个窗口并使用require 语句覆盖该变量。在里面创建一个新窗口,为什么myItemID 应该在那里可见?将方法添加到您的模块(例如 myDetailsWin.passParameter = function() 以传递变量或将它们作为第二个参数添加到 require 语句中 看来您需要学习一些 javascript 基础知识。 new myWindowHere(detailWindow.itemID); 什么都不做,因为上下文不知道那个对象。 myWindowHere.open(); 也不指向任何东西。正如@miga 所说,您正在覆盖一个对象并期望原始对象仍然存在......这不是那样的。 感谢您的反馈。有关如何解决此问题的任何代码示例?我确实是 javascript 的新手,所以发现这很棘手。我需要使用在主页上选择的数据填充 detailWindow,已经从数据库中提取... 【参考方案1】:

试试这个:

mapview.addEventListener('click', function(evt) 
    var detailWindow = Ti.UI.createWindow(
        backgroundColor: '#333333',
        navTintColor: '#FFF',
        barColor: '#222222',
        itemID: evt.annotation.myid
    );
    Ti.API.info('detailWindow.itemID = ' + detailWindow.itemID); 
    // displays expected value from database eg 12345

    var detailWin = require('ui/iphone/detail').myWindowHere(detailWindow.itemID);

【讨论】:

以上是关于Commonjs - 在 Appcelerator 中使用 Titanium 将数据从一个窗口移动到另一个窗口的主要内容,如果未能解决你的问题,请参考以下文章

钛加速器; CommonJS 没有方法

如何在Android中使用Appcelerator Titanium构建Oauth 2.0

Appcelerator 与 Android SDK

如何在 appcelerator 中裁剪图库图像?

appcelerator 是不是支持在聊天中发送视频

Appcelerator:垂直堆叠视图是不是可行?