Frage

Ich bin mit der ExtJS-Framework und ich habe die folgende Prozedur, die ausschließlich als Handler für eine Taste verwendet:

var myButtonHandler = function(button, event){
   //code goes here
};

Meine Taste Definition sieht wie folgt aus:

var myButton = new Ext.Button({
       id : 'myButton',
       renderTo : 'mybutton',
       text : 'Save',
       handler : myButtonHandler,
       scope : this
    });

Wie Sie sehen können, erhält der Handler die erwartete „Button“ und „Ereignis“. Ich möchte jedoch einige zusätzliche Informationen in meinem Handler zu übergeben. Wie würde ich das tun?

War es hilfreich?

Lösung

würde ich tatsächlich Exts CreateDelegate Prototyp verwenden.

var appendBooleanOrInsertionIndex = 0; // Inserts the variables into the front of the function.
    appendBooleanOrInsertionIndex = true; // Appends the variables to the end of the arguments

var myButton = new Ext.Button({
   id : 'myButton',
   renderTo : 'mybutton',
   text : 'Save',
   handler : myButtonHandler.createDelegate(this, [param1, param2], appendBooleanOrInsertionIndex),
   scope : this
});

Andere Tipps

In Ext JS 4:

Ext.bind(myButtonHandler, this, [params array], true);

Sie können eine gute Lösung verwenden, wie Bradley vorgeschlagen hat. Hier ist ein Beispiel. Wo repeatsStore -. Es ist zusätzliche Parameter, die ich auf eine Schaltfläche Handler übergeben möge

Ext.create('Ext.panel.Panel', {
    name: 'panelBtn',
    layout: 'hbox',
    border: 0,
    items:[
        {xtype: 'button', text: 'Add', name:'addBtn',
         handler : Ext.bind(this.addBtnHandler, this, repeatsStore, true)
        }
    ]
});

Und Ihre Handler sollte drei Parameter haben -. Ersten beiden sind Standard, und zuletzt ist Ihr

addBtnHandler:function(button, event, repeatsStore)
{
}

Ich weiß nicht, was es ist, die Sie weitergeben wollen, aber einen Wrapper könnte helfen:

var myButtonHandler = function (button, event, additionalData){
   //code goes here
};

var myButton = new Ext.Button({
  id : 'myButton',
  renderTo : 'mybutton',
  text : 'Save',
  handler : handlerWrapper,
  scope : this
});

var handlerWrapper = function (button, event){
  // Fetch additional data
  var additionalData = "whatever";
  myButtonHandler(button, event, additionalData);
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top