2013-06-24 1 views
4

, поэтому я пробовал много часов в день в течение последних 3 дней. Я исследовал это до смерти, но до сих пор не могу его получить.Titanium, вызывая функцию в одном JS-файле из другого JS-файла

Цель:

-file1.js имеет Buttion, что при нажатии будет вызывать метод Main_Menu в file2.js и откроется новое окно, созданное этим методом, или функции.

неудачных попыток:

-i попытался Ti.include но всегда получает, не может найти ошибку файла, я попытался изменить строку к каждому возможному пути.

-var файл = требуется (путь), но не может использовать метод внутри файла, например file.Main_Meue, не работает

Я также пробовал много других вещей, которые не приходят на ум, но если у кого есть какие-либо советы или вам нужна дополнительная информация, просто спросите. ПОЖАЛУЙСТА ПОМОГИТЕ И THANKYOU

+0

Позвольте мне посмотреть, понимаю ли я ваш вопрос. 'file1.js' имеет кнопку. Когда вы нажимаете кнопку, новое окно создается с помощью 'file2.js'? Просто поставьте 'Main_Menu();' в конце 'file2.js' и когда это окно будет создано, оно вызовет эту функцию – Ronnie

+0

да, но main_menu() {имеет код окна создания}. поэтому код для вновь открытого окна находится в файле2.js, так же как метод – Mikecit22

+0

вызов main_menu в файле 2 не нужен. Вы создаете окно из файла1. Я буду обновлять свой ответ. – Ronnie

ответ

2

второй ответ

Создайте второе окно следующим образом:

//file1.js 
button.addEventListener('click', function() 
{ 
    var secondWindow = Ti.UI.createWindow({ 
    url:'file2.js' 
    }); 
    secondWindow.open(); 
}); 

file1.js создает новое окно с помощью file2.js с помощью параметра url. file2.js теперь ваше новое окно после вызова secondWindow.open()

Первого ответа

Основы названия этой темы, вы можете использовать метод fireEvent. Например:

file1.js

Ti.App.addEventListener('customEventName', function() 
{ 
    Ti.API.info('function fired from file2.js'); 
}); 

file2.js

Ti.App.fireEvent('customEventName'); 

http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.Proxy-method-fireEvent

+0

были ли код для того, что я хочу? я хочу, чтобы код появился из файла2 – Mikecit22

+0

, есть ли способ обойти его, например, в java, где я могу просто вызвать его в файле1, где я могу сделать объект или что-то подобное из файла2 и сделать, object_Of_File2.Main_Menu()? – Mikecit22

+0

Что касается вашего второго ответа, я тоже пробовал это и получил ту же ошибку, «can not find file». где оба файла находятся в одном каталоге. – Mikecit22

0

это может быть проблемой структуры кода. В основном у вас есть три хороший способ сделать это в зависимости от того, какую версию вы используете (на самом деле, какую версию вы начали свой проект:

  • Перед 2.x: лучший способ был назвать архитектуру tweetanium: www.shanestillwell. ком/index.php/2012/03/29/MVC-для-Appcelerator-титан-понимание-tweetanium/
  • для 2.x: вы можете использовать структуру CommonJS: https://wiki.appcelerator.org/display/guides/CommonJS+Modules+in+Titanium
  • для 3.x: вы должны взгляните на Alloy.Globals, который является почти таким же, как tweetanium

Надеюсь, это поможет.

1

file1.js

var toBeExported ={ 
a : function(){ 
    //your code goes here 
    } 
}; 
exports.a = toBeExported.a 

file2.js

var b = require ('file1'); 
//you can use all the functions that is exported from file1 here. 
//you have to create a lib folder or place the file1.js in the existing lib folder for the export/require to work. 

Надеюсь, это поможет.