2013-03-25 3 views
3

У меня есть проект, созданный в титановом SDK 3.02 с использованием рамки сплава. Сво вкладками приложений, и я хочу, чтобы изменить вид tab2 от кнопки внутри tab1Титановый сплав, требуется контроллер

tab1.xml

... 
    <Button id="button" onClick="setup"> 
... 

tab1.js

function setup(){ 
    //this doesn't work 
    var view = Alloy.createController('tab2'); 
    view.changeBackground('blue'); 
    $.tabGroup.setActiveTab(1); 
} 

tab2.xml

... 
    <View id="view" backgroundColor="red"> 
... 

tab2.js

... 
    exports.changeBackground = function(color){ 
     $.view.backgroundColor = color; 
     //this runs eg 
     Ti.API.info('function running'); 
    } 

Я понимаю, почему это не работает. Я создаю новый экземпляр контроллера, который никогда не добавляется в представление. Но я хочу получить доступ к существующему контроллеру. Я попытался

var view = require('tab2'); 
view.changeBackground('blue'); 

Но это дает мне "модуль не найдена ошибка. Я надеюсь, что это имеет смысл

Благодаря

ответ

2

решил его

Настройка функции в tab2 как Alloy.Global сделал трюк.

tab1.xml

... 
    <Button id="button" onClick="setup"> 
... 

tab1.js

function setup(){ 
    var changeBackgroundColor = Alloy.Globals.changeBackgroundColor; 
    changeBackgroundColor('blue'); 
    $.tabGroup.setActiveTab(1); 
} 

tab2.xml

... 
    var changeBackground = function(color){ 
     $.view.backgroundColor = color; 
    } 
    Alloy.Global.changeBackGroundColor = changeBackground; 
... 
+0

не работает для меня, я пытался скрыть/отключить кнопку из поля зрения сына к родительскому мнению –

0

Это один путь. Другой (который ИМХО лучше, потому что вы избегаете Глобального) проще. Вы можете получить доступ к вкладке просто выполнив:

function setup(){ 
    //This DOES work. 
    // Just keep in mind that you must use the tab index corresponding to your tab. 
    // Also, If your view actually uses a window and the tab is on your TabGroup view, 
    // you should do $.tabGroup.tabs[1].window. 
    var view = $.tabGroup.tabs[1]; 
    view.changeBackground('blue'); 
    $.tabGroup.setActiveTab(1); 
} 
Смежные вопросы