मुझे एक साधारण टाइटेनियम मोबाइल प्रोजेक्ट पर निम्न त्रुटि मिलती रहती है:

Location:
app.js

Message:
Uncaught ReferenceError: tab2 is not defined

Source: tabGroup.addTab(tab2);

यहाँ मेरी app.js फ़ाइल में कोड है:

// create tab group
var tabGroup = Titanium.UI.createTabGroup();

// create the window

var win1 = Ti.UI.createWindow({
width: 320,
height: 440,
top: 0,
left: 0,
backgroundImage: 'background.png',
title: 'loan calculator',
barImage: 'navbar.png'
});

 // creat the view, this will hold all of our UI controls
// note the hight of this view is the height of the window
// minus 134px for the status bar and padding and adjusted for navbar

var view = Ti.UI.createView({
width: 300,
height: win1.height - 134,
left: 10,
top: 10,
backgroundColor: '#fff',
borderRadius: 5
});

// we will give the logo a left margin so it centers neatly
// within our view

var _logoMarginLeft = (view.width - 253) / 2;

// now let's add our logo to an imageview and add that to our 
// view object

 var logo = Ti.UI.createImageView({
backgroundImage: 'logo.png',
width: 253,
height: 96,
left: _logoMarginLeft,
top: 0
  });

 view.add(logo);

 // add the view to our window

 win1.add(view);

// add the first tab and attach our window object (win1) to it

var tab1 = Ti.UI.createTab({
icon: 'icon_calculator.png',
title: 'Calculate',
window: win1
  });

 // create the second window for settings tab

 var win2 = Ti.UI.createWindow({
width: 320,
height: 440,
top: 0,
left: 0,
backgroundImage: 'background.png',
url: 'window2.js',
title: 'Settings',
barImage: 'navbar.png'
  });


  // now add the tabs to our tabGroup object

   tabGroup.addTab(tab1);
   tabGroup.addTab(tab2);

  // open the tabgroup to launch the app

  tabGroup.open();

यहाँ मेरी window2.js में कोड है:

 // add the second tab and attach our external window object
 // (win2 / window2.js) to it

 var tab2 = Ti.UI.createTab({
icon: 'icon_settings.png',
title: 'Settings',
window: win2
});

इसका समाधान कैसे किया जा सकता है?

0
Amen Ra 26 जिंदा 2012, 23:44

1 उत्तर

सबसे बढ़िया उत्तर

Tab2 निर्माण को app.js से window2.js में क्यों ले जाया गया? आप इस बदलाव के साथ क्या हासिल करने की कोशिश कर रहे हैं?

Tab1 सही तरीके से बनाया गया है... tabGroup में tab (tab1) होता है जिसे विंडो (window1) के लिए एक कंटेनर के रूप में बनाया गया था। दूसरा टैब गलत क्रम में बनाया जा रहा है।

साथ ही, जब आप createWindow के url फॉर्म का उपयोग करते हैं, तो यह एक बिल्कुल नया संदर्भ बनाता है। उस विंडो के भीतर के आइटम पैरेंट स्कोप तक नहीं पहुंच सकते हैं, और इसके विपरीत।

अंत में, एक अतिरिक्त बोनस के रूप में, app.js संभवतः window2.js निष्पादित होने से पहले पूरा हो जाएगा। URL लोड अतुल्यकालिक है, और संदर्भ निर्माण में समय लगता है, इसलिए भले ही यह सभी संदर्भों में पहुंच सकता हो, टैब 2 को टैब समूह में जोड़े जाने के समय तक सबसे अधिक संभावना अभी तक नहीं बनाई गई होगी। मैंने इस तरह के समय के मुद्दों के साथ बहुत सारे "मज़े" किए हैं ...

1
Tevo D 27 जिंदा 2012, 01:45
मैं एपसेलरेटर टाइटेनियम स्मार्टफोन ऐप डेवलपमेंट कुकबुक पुस्तक में कोड का परीक्षण कर रहा था। मैंने विंडोज़ को एक अलग फ़ाइल में प्रोग्राम किया है लेकिन कभी भी एक टैब नहीं है इसलिए मैं इसे ठीक से करना चाहता हूं।
 – 
Amen Ra
27 जिंदा 2012, 23:33