2012-03-11 4 views
0

Я использую несколько оконных приложений, управляющих через Tabgroup. Я использую файлы .js для каждого окна, которые передаются как URL-адрес с каждым окном. У меня также есть файл functions.js, где я пишу подпрограммы для многократного использования кода, например, для создания форм или представления таблиц и т. Д. Теперь я застрял в ситуации, когда мне нужно вызвать функцию, которая генерирует элемент формы, который находится в WindowA. В WindowA я явно определил все необходимые элементы формы. Теперь, что я передаю в своей подпрограмме функции, она получает ссылку на уже созданный элемент формы.Titanium appcelerator: Передача справки в других Windows

Обратите внимание, что TableView создается в отдельном окне, скажем, WinB, и я генерирую строки, вызывая процедуру, написанную в functions.js. Я получаю неопределенную ошибку, несмотря на то, что переменные глобальны в WinA.

Как я могу получить ссылку на эти переменные во всем приложении?

ответ

3

Я настоятельно рекомендую НЕ использовать Ti.App для передачи переменных - даже если он работает. Это не лучшая практика. Я знаю, что вы этого не захотите, но примите время реорганизовать свой код, чтобы не использовать окна с URL-адресами - перейдите к одному примеру/commonJS.

См https://wiki.appcelerator.org/display/guides/Mobile+Best+Practices и https://wiki.appcelerator.org/display/guides/CommonJS+Modules+in+Titanium

Также см https://github.com/appcelerator-titans/App для текущего кода лучшей практики.

Для рефакторинга потребуется некоторое время, но приложение будет намного более стабильным, и ваш код будет намного чище.

0

Прежде всего, вы можете объявить глобальную переменную, например. Ti.App объект. AFAIR, эта или некоторые подобные вещи не работают должным образом на iPhone.

Если это не будет работать, есть трюк с закрытием:

myVar = {field: 'some value'}; 
Ti.App.getMyGlobalVar = function() { 
    return myVar; 
} 

Кроме того, я не уверен, является ли Ti.App или какие-либо другое пространство имен будут работать. Прошло несколько месяцев, так как я использовал Titanium appcelerator.

Смежные вопросы