【发布时间】: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,已经从数据库中提取...
标签: javascript titanium appcelerator appcelerator-titanium commonjs