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 将数据从一个窗口移动到另一个窗口的主要内容,如果未能解决你的问题,请参考以下文章