定义类
Ext.define('Cookbook.Vehicle', { Manufacturer: 'Aston Martin', Model: 'Vanquish', getDetails: function(){ alert('I am an ' + this.Manufacturer + ' ' + this.Model); } }, function(){ Console.log('Cookbook.Vehicle class defined!'); });
定义的类由 Ext.ClassManager转为Ext.Class的实例,在此过程执行一系列前期和后续的步骤。.前期步骤的顺序如下:
Loader: 加载需要的还没有被加载过的类
Extend: 基于已有类扩展
Mixins: 把定义的 Mixins 融合到类中
Config: 在配置选项中的属性将被处理,并创建相应的get/set/apply/reset 方法
Statics: 处理静态属性和方法
后续步骤的顺序如下:
Aliases: 定义别名,以便通过xtype即可创建实例
Singleton: 如果定义为单一对象,此时创建实例
Legacy: 不太明白,暂时没用到
也可以通过registerPreProcessor和registerPostProcessor方法添加自定义的处理步骤
如果没有指明基类,默认基类是Ext.Base
Mixins 是一些可以把别的类的属性和方法融合进当前类中,相当于一个子集,简化定义,减少代码量。
1. 定义相机功能类: Ext.define('HasCamera', { takePhoto: function(){ alert('Say Cheese! .... Click!'); } }); 2. 定义智能手机类,要求必须具有相机功能. Ext.define('Cookbook.Smartphone', { mixins: { camera: 'HasCamera' } }); 3. 在智能手机类可调用相机功能类的方法: Ext.define('Cookbook.Smartphone', { mixins: { camera: 'HasCamera' }, useCamera: function(){ this.takePhoto(); } });
1.通过xtype查询
var panels = Ext.ComponentQuery.query('panel');
var buttons = Ext.ComponentQuery.query('panel button');
var saveButton = Ext.ComponentQuery.query('button[action="saveUser"]');
var usersPanel = Ext.ComponentQuery.query('#usersPanel');
扩展extjs的组件
1. 定义扩展组件的类:
Ext.define('Cookbook.DisplayPanel', { extend: 'Ext.panel.Panel' });
Ext.define('Cookbook.DisplayPanel', { extend: 'Ext.panel.Panel', initComponent: function(){ // call the extended class' initComponent method this.callParent(arguments); } });
nitComponent: function(){ // apply our configuration to the class Ext.apply(this, { title: 'Display Panel', html: 'Display some information here!', width: 200, height: 200, renderTo: Ext.getBody() }); // call the extended class' initComponent method this.callParent(arguments); }
4. 调用:
var displayPanel = Ext.create('Cookbook.DisplayPanel'); displayPanel.show();
原文地址:http://blog.csdn.net/litdwg/article/details/37990931