2011-06-24 18 views
1

ボタンツールバーに複数のボタンが表示されています。異なるリンクに移動するためにボタンが必要です。しかし、私はそれを把握することができませんでした。以下は私がやろうとしたものですが、うまくいかないものです。各ボタンの設定についてはSencha touchのツールバーのボタンをリンクする方法は?

 //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 

    }]; 

答えて

3

、1つの余分のconfigのparamを追加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] 

あなたはそのためにオブジェクトを使用する必要があり、最初に類似1:

defaults: { handler: tapHandler } 

そして、あなたは、単一のオブジェクト内に同じ名前の複数のパラメータを置くことができない、唯一の「ハンドラが」そこに行くでしょう。 のデフォルトはの場合、すべての項目に1つのハンドラしか適用されません。したがって、個別のハンドラを個々のボタン用にする場合は、各ボタンにハンドラリスナを使用します。

+0

各ボタンにハンドラリスナを使用するにはどうすればいいですか? – Alex

+0

ハンドラ(tapHandlerとtapHandler2)を個々のボタンにアタッチしていることがわかります。ですから、デフォルトの設定を削除してください。それが動作します。 – Swar

関連する問題