Wie kann ich zusätzliche Parameter zu einem ExtJS-Handler hinzufügen?
-
22-08-2019 - |
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?
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);
};