0 0

EXT4.0方法如何进行好的封装0

自己在项目中写了一个公用的方法,方法调用的比较多,就相当于一个window window里面的内容也比较多,现在需要吧这整个方法抽离出来,方便其他的组员进行调用,初始window里面定义的form就有2个 fileSet就更多了 还有panle等等 里面也自己定义了些ID,现在不知道如何进行好的封装,刚接触EXT也没多久,求各位亲给点思路!
2012年12月07日 08:50

2个答案 按时间排序 按投票排序

0 0

采纳的答案

//mixins类
Ext.define('Canna.mixins.GridUtil', {
	onAfterrender : function() {
		var me = this;
		if (!this.getStore && !this.getStore()) {
			return;
		}
		this.showLoadingMark();
		this.getStore().load({
			callback : function() {
				me.hideLoadingMark();
			}
		});
	},
	onSelectionchange : function(sm, selections) {
		this.view.panel.down('#removeButton').setDisabled(
				selections.length == 0);
	},
	onAddHandler : function() {
		var panel = this.up('gridpanel');
		var store = panel.getStore();
		if (store.storeId == 'ext-empty-store') {
			store = Ext.create('Ext.data.Store', {
				model : 'Ext.data.Model',
				fields : [],
				proxy : 'memory'
			});
			panel.bindStore(store);
		}
		var model = store.model;
		var r = Ext.create(model, {});
		panel.getStore().insert(0, r);

		if (panel.rowEditingAble) {
			var rowEditing = panel.getEditPlugin();
			rowEditing.cancelEdit();
			rowEditing.startEdit(0, 0);
		}
	},
	onDeleteHandler : function() {
		var grid = this.up('gridpanel');
		var records = grid.getSelectionModel().getSelection();
		Ext.MessageBox.confirm('Confirm', '请确定删除!', function(buttonId) {
			if (buttonId == 'yes') {
				grid.getStore().remove(records);
			}
		});
	},
	showLoadingMark : function() {
		this.loadingMark = this.loadingMark || new Ext.LoadMask(this, {
			msg : 'loading...'
		});
		this.loadingMark.show();
	},
	hideLoadingMark : function() {
		this.loadingMark.hide();
	},
	getEditPlugin : function() {
		return this.getPlugin(this._pluginId);
	},
	addRowEditPlugin : function() {
		var me = this;
		me._pluginId = 'rowEditing' + Math.random();
		var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
			clicksToEdit : 2,
			autoCancel : true,
			pluginId : me._pluginId
		});
		me.plugins = [ rowEditing ];
	}
});

//extend 类
Ext.define('Canna.view.BaseGridPanel', {
	extend : 'Ext.grid.Panel',
	alias : 'widget.baseGridPanel',
	mixins : [ 'Canna.mixins.GridUtil' ],
	initComponent : function() {
		// rowEditingAble
		// checkboxModelAble
		// simpleDockAble
		// autoLoadStore
		var me = this;
		if (this.rowEditingAble) {
			this.addRowEditPlugin();
		}
		if (this.autoLoadStore) {
			this.addListener('afterrender', me.onAfterrender);
		}
		if (this.checkboxModelAble) {
			this.selModel = Ext.create('Ext.selection.CheckboxModel', {
				listeners : {
					selectionchange : me.onSelectionchange
				}
			});
		}
		if (this.simpleDockAble) {
			this.dockedItems = [ {
				xtype : 'toolbar',
				items : [ {
					text : '添加',
					iconCls : 'add',
					handler : me.onAddHandler
				}, '-', {
					itemId : 'removeButton',
					text : '删除',
					iconCls : 'remove',
					disabled : true,
					handler : me.onDeleteHandler
				} ]
			} ];
		}
		this.callParent(arguments);

	}
});


使用mixins,或使用extend

2012年12月07日 11:59
0 0

ext4.0的开发现在更加面向对象了,你可以定义一个"类",把相关方法放进去,有需要调用方法的时候,引用此"类"

2012年12月07日 09:27

相关推荐

    springMVC Ext4.0 jdbc示例

    在"springMVC mysq 自动封装SQL生成"中,EXT4.0可能被用作前端展示数据的界面,通过AJAX与后端Spring MVC服务进行交互,获取或更新MySQL数据库中的数据。 MySQL是一个开源的关系型数据库管理系统,广泛应用于各种...

    4.0Ext 树型结构

    这个接口封装了模型实例,提供了额外的方法和属性来适应树控件的特殊状态。例如,你可以改变树的外观,通过设置`useArrows`为`true`来隐藏边线并显示箭头图标来表示展开和折叠。通过设置`rootVisible`为`false`,...

    自己写的ExtJS4.0用MVC的示例

    - **视图模型(ViewModel)**:虽然在ExtJS 4.0中不是必须的,但可以用来在视图中封装数据和逻辑,使视图更加独立和可复用。 - **Store和Model的连接**:控制器通常会与Store交互,以加载或保存模型数据。 - **...

    在Ext中集成KindEditor4.0正式版

    在Ext中集成KindEditor4.0正式版是一个常见的前端开发任务,这涉及到两个主要的JavaScript库:ExtJS和KindEditor。ExtJS是一个强大的组件化JavaScript框架,用于构建富客户端应用程序,而KindEditor则是一个功能丰富...

    丛林商城v1.0

    "丛林商城v1.0"是一个基于特定技术栈构建的电商项目,主要采用了Spring、SpringMVC和MyBatis这三大主流Java企业级开发框架,以及前端的EXT4.0库。这个项目的设计目的是为了学习和复习相关技术,提供了一个简易的商城...

    ExtJs4.0跨行合并(按照指定列合并)(Ext.net 2.0)

    而Ext.NET 2.0是基于ASP.NET的控件库,它封装了ExtJS的功能,使得在.NET环境中使用ExtJS变得更加方便。 跨行合并通常涉及到表格中的单元格合并,这在数据展示时可以有效地节省空间,突出显示特定的数据组。在ExtJS ...

    Jquery-Extjs4.0框架

    3. **封装Ajax**: jQuery对XMLHttpRequest进行了封装,提供了易于使用的API来处理异步请求。 4. **动画效果**: jQuery内置了丰富的动画效果,如淡入淡出、滑动等,简化了创建动态效果的过程。 **Ext JS 4.0框架** ...

    Ext Js权威指南(.zip.001

    5.4.3 封装好的单击事件:ext.util.clickrepeater / 200 5.5 键盘事件 / 201 5.5.1 为元素绑定键盘事件:ext.util.keymap / 201 5.5.2 键盘导航:ext.util.keynav / 204 5.6 综合实例:股票数据的实时更新 / ...

    ExtJS4.0下的文件上传方式代码filesupload

    4. **数据传输**:在ExtJS中,通常使用FormData对象来封装表单数据,包括文件。通过设置`Ext.Ajax.request`的`enctype`为`'multipart/form-data'`,并把FormData对象传递给`params`,可以确保文件被正确地发送到...

    EXTJS4.0视频教程配套代码包含action类

    在EXTJS4.0中,action类是用来定义与服务器的通信模式,包括GET、POST、PUT、DELETE等HTTP方法。这些操作是通过数据模型(Model)和数据代理(Proxy)来实现的,数据代理将客户端的操作转换为适当的HTTP请求,并处理...

    extjs4.0 MVC 示例代码

    通过`Ext.application`方法创建应用程序实例,定义模块化结构,使大型应用的组织更加清晰。 在"EXTJS 4.0 MVC 示例代码"的压缩包中,`WebRoot`目录很可能包含了整个应用程序的文件结构,如HTML页面、JavaScript文件...

    ExtJs4.0学习指南(中文)

    `Element.dom`属性可以直接访问底层的DOM节点,而`Ext.get`返回的是一个封装了DOM节点的Element对象。如果需要根据选择器获取多个元素或有特定特征的元素,可以使用选择器,如获取页面上所有`<p>`标签。 6. **学习...

    Android4.0内核源代码

    网络堆栈处理网络数据的传输,实现数据的封装、路由和解封装。 6. **安全机制**:Android 4.0引入了更严格的安全模型,比如权限管理系统,保护用户数据和系统资源不被恶意软件侵害。内核中的 SELinux(Security-...

    ExtJs4.0 mvc 模式

    - 模型还提供了同步机制,与服务器进行数据交换,例如通过`load`、`save`和`destroy`方法。 2. **View(视图)**: - 视图是用户界面的表示层,它通常由组件(components)组成,如表格、面板、按钮等。 - 在...

    Extjs4.0 mvc模式开发

    通过`Ext.data.Model`类创建模型,可以方便地进行数据操作和同步。 - **Store**:存储模型实例的集合,负责数据的加载、保存和排序等功能。Store可以连接到远程服务器,通过Ajax请求获取数据,也可以使用本地数据源...

    Extjs4.0视频教程和源代码,另附文档翻译

    - **使用Ext.Ajax**:详细讲解了Extjs提供的Ajax封装方法Ext.Ajax,包括发送请求、处理响应等功能。 - **错误处理和调试技巧**:提供了关于如何处理Ajax请求中的异常情况及如何进行调试的建议。 ### Core包和Ext类 ...

    Extjs下的文件上传(非4.0)

    在ExtJS框架中进行文件上传,特别是在非4.0版本的情况下,我们需要手动处理大部分上传逻辑,因为早期版本可能没有提供现成的文件上传组件。在这个过程中,涉及到的主要知识点包括Ajax异步请求、表单数据处理、文件...

Global site tag (gtag.js) - Google Analytics