0
votes

I'm trying to pass data from a main window when a button is pressed on that page using require(), like so:

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);
}

In detail.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;  

But, I've gone wrong somewhere as I'm getting error message: Can't find variable: myItemID

Please help! Many thanks

1
you create a window in detailWindow and override that variable with the require statement. Inside that you create a new window, why should myItemID be visible in there? Add methods to your module (e.g. myDetailsWin.passParameter = function(){} to pass in variables or add them to the require statement as a 2nd parameter - miga
It looks like you need to learn a couple javascript basics. new myWindowHere(detailWindow.itemID); doesn't do anything, because the context doesn't know that object. myWindowHere.open(); doesn't point to anything either. And as @miga said you're overriding an object and expect the original to still exist... that doesn't work like that. - Rene Pot
Thanks for the feedback. Any code examples on how to resolve this? I am indeed new to javascript, so finding this tricky. I need to populate detailWindow with data that is selected on main page, already pulled from database... - Mr_P

1 Answers

0
votes

try this :

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);
}