extjs
Ereignismodell
Suche…
Einführung
ExtJS spricht sich dafür aus, Ereignisse zwischen den Klassen abzufeuern und darauf zu warten. Durch das Auslösen von Ereignissen und das Abhören von ausgelösten Ereignissen benötigen Klassen kein "schmutziges" Wissen über die Klassenstruktur der jeweils anderen Klasse und verhindern, dass Code miteinander verknüpft wird. Darüber hinaus erleichtern Ereignisse das Abhören mehrerer Instanzen derselben Komponente, indem ein generischer Listener für alle Objekte mit demselben Selektor zugelassen wird. Schließlich können andere Klassen auch bereits vorhandene Ereignisse nutzen.
Controller, die auf Komponenten hören
Ext.define('App.Duck', {
extend: 'Ext.Component',
alias: 'widget.duck',
initComponent: function () {
this.callParent(arguments);
this._quack();
},
_quack: function () {
console.log('The duck says "Quack!"');
this.fireEvent('quack');
},
feed: function () {
console.log('The duck looks content.');
},
poke: function () {
this._quack();
}
});
var feedController = Ext.create('Ext.app.Controller', {
listen: {
components: {
duck: {
quack: 'feedDuck'
}
}
},
feedDuck: function (duck) {
duck.feed();
}
});
var countController = Ext.create('Ext.app.Controller', {
listen: {
components: {
duck: {
quack: 'addCount'
}
}
},
quackCount: 0,
addCount: function (duck) {
this.quackCount++;
console.log('There have been this many quacks: ' + this.quackCount);
}
});
var firstDuck = Ext.create('App.Duck');
// The duck says "Quack!"
// The duck looks content.
// There have been this many quacks: 1
var secondDuck = Ext.create('App.Duck');
// The duck says "Quack!"
// The duck looks content.
// There have been this many quacks: 2
firstDuck.poke();
// The duck says "Quack!"
// The duck looks content.
// There have been this many quacks: 3
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow