Как связать кнопки на панели инструментов в Sencha Touch? - PullRequest
1 голос
/ 25 июня 2011

На панели инструментов кнопок загружается несколько кнопок. Мне нужны эти кнопки для перехода по разным ссылкам.Тем не менее, я не смог понять это.Ниже то, что я пытался сделать, но это не работает.

        //Below are three buttons that need to go to three different links 
    var buttonsGroup1 = new Ext.Button({
    text: 'MESSAGES',
    handler: tapHandler
    });

    var buttonsGroup2 = new Ext.Button({
    text: 'HOLDS',
    handler: tap2Handler
    });

    var buttonsGroup3 = new Ext.Button({
    text: 'FINANCIALS',
    handler: tapHandler
    });

    //Click on the button and it goes to these links 
    var tapHandler = function (btn, evt) {
        window.location = 'index.html';
    };

    var tap2Handler = function (btn, evt) {
        window.location = 'redirect.php';
    };

    //Combine all the variables above and some other stuff and then add it to docked items very object oriented =)
    var dockedItems = [
    {
        xtype: 'toolbar',
        title: 'Student Portal',
        ui: 'light',
        dock: 'top',
        items: buttonsSpecTop,
        defaults: { handler: tapHandler }
    },  
    {
        xtype: 'toolbar',
        ui: 'dark',
        items: [buttonsGroup1, buttonsGroup2, buttonsGroup3], //This is where I load up all the buttons 
        dock: 'bottom',
        layout:{
        pack: 'center'
        },
        defaults: [handler: tapHandler, handler: tap2Handler] //This is the handler for the links

    }];

1 Ответ

3 голосов
/ 27 июня 2011

Для каждой конфигурации кнопки добавьте один дополнительный параметр конфигурации, скажем actionUrl, следующим образом:

{
    xtype: 'toolbar',
    actionUrl : 'http://www.google.com',
    title: 'Student Portal',
    ui: 'light',
    dock: 'top',
    items: buttonsSpecTop,
    defaults: { handler: tapHandler }
}

Теперь для функции tapHandler первым параметром является экземпляр кнопки. Таким образом, вы можете получить URL следующим образом:

function tapHandler(btn){
   console.log(btn);
   window.open(btn.actionUrl);
}

И вы не можете поместить вещи в javascript таким образом внутри массива:

defaults: [handler: tapHandler, handler: tap2Handler]

Для этого вы должны использовать объект, аналогичный первому:

defaults: { handler: tapHandler }

И вы не можете поместить несколько параметров с одним и тем же именем в один объект, только один " handler " будет идти туда. А для по умолчанию ко всем элементам будет применен только один обработчик. Поэтому, если вам нужны отдельные обработчики для отдельных кнопок, используйте обработчик обработчика для каждой кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...