Plugins - Extjs

); Ext.define('MyApp.plugin.Validator', extend: 'Ext.plugin.Abstract', alias: 'plugin.validator', config: rules: null ,

validate: function() var errors = []; // validation logic return errors; extjs plugins

init: function(host) var originalMethod = host.someMethod; host.someMethod = function() // pre-processing var result = originalMethod.apply(this, arguments); // post-processing return result; ; ); Ext

Plugin Aliases and Lazy Instantiation // In plugin definition Ext.define('MyApp.plugin.ToolbarDock', alias: 'plugin.toolbardock' ); // In component config config: rules: null

init: function(form) this.form = form; form.on('beforeaction', this.onBeforeSubmit, this); ,

Better: use mon (monitor) to safely override. Example 1: Row Expander Plugin (Custom Version) Ext.define('MyApp.plugin.RowExpander', extend: 'Ext.plugin.Abstract', alias: 'plugin.rowexpander', config: expandOnDblClick: true ,

init: function(host) host.myNewMethod = this.myNewMethod.bind(this); , myNewMethod: function() console.log('Called from host component');