extjs
Händelsemodell
Sök…
Introduktion
ExtJS förespråkar användning av skjutning och lyssnande för evenemang mellan klasser. Genom att skjuta upp evenemang och lyssna på avfyrade evenemang kräver klasser ingen "smutsig" kunskap om varandras klassstruktur och förhindrar att kod kopplas ihop. Dessutom gör händelser det enkelt att lyssna på flera instanser av samma komponent genom att tillåta en generisk lyssnare för alla objekt med samma väljare. Slutligen kan andra klasser också kunna använda sig av redan existerade händelser.
Styrenheter som lyssnar på komponenter
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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow