Für ExtJS 6.5+ Modern fügen Sie ein Klickereignis zu einer Komponente hinzu, damit Sie in einem Ansichtscontroller darauf zugreifen können.ExtJS 6.x Hinzufügen von benutzerdefiniertem Klickereignis zur Komponente für ViewController
Das folgende Beispiel funktioniert nicht. Ich habe auch versucht, einen Listener direkt zum Unterelement hinzuzufügen.
Beispiel Vorlage:
Ext.define('TestController', {
extend: 'Ext.app.ViewController',
alias: 'controller.test-controller',
control: {
'[reference=someComponent]': {
click: 'someComponentClick'
}
},
someComponentClick: function() {
console.log('it worked!')
}
})
Ext.define('TestContainer', {
extend: 'Ext.Container',
xtype: 'test-container',
controller: 'test-controller',
items: [
{
xtype: 'component',
reference: 'someComponent'
html: 'CLICK HERE TO TEST'
}
]
})
aktualisieren
Basierend auf priyadarshi Antwort, ruft die folgende auf dem Element die Funktion in der Steuerung. Ich würde es jedoch vorziehen, das Ereignis normal im Controller auszuwählen, indem ich nur auf das Klickereignis höre. Gibt es trotzdem Ereignis-Listener an das dom vom Controller anzuhängen oder zumindest ein Event vom Element auszulösen, damit man es im Controller abholen kann (ohne dass es explizit Funktionen auf dem Controller aufruft).
Ext.define('TestController', {
extend: 'Ext.app.ViewController',
alias: 'controller.test-controller',
control: {
'[reference=someComponent]': {
click: 'someComponentClick'
}
},
someComponentClick: function() {
console.log('it worked!')
},
someFuncOnController: function() {
console.log('someFuncOnController') // << This runs
}
})
Ext.define('TestContainer', {
extend: 'Ext.Container',
xtype: 'test-container',
controller: 'test-controller',
items: [
{
xtype: 'component',
reference: 'someComponent'
html: 'CLICK HERE TO TEST',
listeners: [
element: 'element',
click: 'someFuncOnController'
]
}
]
})
hat keine Kontrolle() Anweisungen auf dem Controller verwenden. –
Warum sollte ich die Kontrolle nicht benutzen? das ist normalerweise, wie ich meine Listener auf einer Komponente tun –
Weil es Ereignisse auf einem Ereignisbus einrichten muss, die alle Ereignisse verarbeiten müssen. Wenn Sie ein Ereignis direkt auf der Komponente verwenden, ist es eine einfache O (1) Suche in der Steuerung. –