`

扩展Extjs4 Store,添加'aftersync'事件

 
阅读更多
/**
 * Store扩展
 */
Ext.define('Ext.ux.StoreEx', {
	extend : 'Ext.data.Store',
	alias : 'store.storeex',

	batchUpdateMode : 'complete',

	constructor : function(config) {
		var me = this;

		me.addEvents('aftersync');

		me.callParent([ config ]);
	},

	onBatchComplete : function(batch, operation) {
		var me = this, operations = batch.operations;
		var length = operations.length, i;

		me.suspendEvents();

		for (i = 0; i < length; i++) {
			me.onProxyWrite(operations[i]);
		}

		me.resumeEvents();

		me.fireEvent('aftersync', me);
		me.fireEvent('datachanged', me);
	},

	sync : function() {
		var me = this;
		var options = {};
		var toCreate = me.getNewRecords();
		var toUpdate = me.getUpdatedRecords();
		var toDestroy = me.getRemovedRecords();
		var needsSync = false;

		if (toCreate.length > 0) {
			options.create = toCreate;
			needsSync = true;
		}

		if (toUpdate.length > 0) {
			options.update = toUpdate;
			needsSync = true;
		}

		if (toDestroy.length > 0) {
			options.destroy = toDestroy;
			needsSync = true;
		}

		if (needsSync && me.fireEvent('beforesync', options) !== false) {
			me.proxy.batch(options, me.getBatchListeners());
		}

		return needsSync;
	}
});
分享到:
评论

相关推荐

    Extjs 重写Panel添加click事件

    然而,有时我们需要对Panel进行自定义,例如添加或修改事件处理。在这个场景中,我们将深入探讨如何在Ext JS中重写Panel并为其添加click事件。 首先,理解Panel的基本结构是至关重要的。一个Panel由多个部分组成,...

    ExtJs中Store加载(load)时候提示信息

    - **add**:布尔值,指示是否将新加载的数据添加到现有Store数据的末尾,而不是替换它。 通过以上方法,开发者可以在ExtJS中有效地管理Store的加载过程,提供良好的用户反馈机制,增强应用程序的交互性和可用性。...

    storebar extjs通过store实现toolbar

    3. 绑定`Store`到`Toolbar`:使用`bind`或`mon`方法监听`Store`的数据变更事件,当`Store`加载或更新数据时,动态生成并添加相应的组件到`Toolbar`的容器中。 ```javascript myStore.mon(myStore, 'load', function...

    extjs4动态添加表头

    extjs4动态添加表头字段、删除、增加记录!

    Extjs4添加tooltip

    Extjs4的textfield控件竟然没有tooltip悬浮提示,这应该算是个bug吧。网上查了很多,也没有方案。后来自己通过查询并整理出这个方案,终于实现了。 思想如下: 在textfield渲染时注册mouseover事件,然后在其中调用...

    extJs3升级extjs4方案

    可以看到,ExtJS4 需要动态类定义,这样可以访问父类和定义 store 模型。 此外,ExtJS4 也改变了 Record 的定义。例如,在 ExtJS3 中,我们可以使用以下代码来定义一个 Record: ```javascript var PostStatus = ...

    Extjs4 关于Store的一些操作(加载/回调/添加)

    在EXTJS4中,Store是数据管理的核心组件,它负责管理数据集,包括加载、更新和缓存数据。本文将详细讲解如何处理Store的加载、回调以及如何在两个Store之间添加符合条件的记录。 1. **加载与回调问题** EXTJS4的...

    Extjs 4.11 重写 Panel 添加 click事件

    4. **移除事件监听器**:在某些情况下,你可能需要在特定条件下移除已添加的事件监听器,可以使用`removeListener`方法实现: ```javascript // 假设listener是之前添加的监听器函数 panel.removeListener('click', ...

    extjs4 对各类型store各种数据的读取 model 前台 等等

    根据提供的文件信息,本文将详细解析ExtJS 4中如何处理不同类型的Store及与之相关的数据操作、模型定义以及前端展示等内容。 ### ExtJS 4中的Store与数据管理 #### Store概念简介 在ExtJS 4中,Store是用于存储...

    Extjs4下的STOREMENU

    总的来说,EXTJS4的STOREMENU是一个强大且灵活的功能,它结合了数据管理和用户界面元素,使得动态创建和管理菜单变得更加简单。在实际应用中,开发人员可以根据需求调整Store的数据结构和Menu的行为,以满足各种复杂...

    EXTJS4自学手册

    EXTJS4自学手册——EXT数据结构组件(store) 三、Extjs布局 EXTJS4自学手册——EXT容器布局(Auto,Anchor,Absolute,Hbox) EXTJS4自学手册——EXT容器布局(Vbox,Accordion,Table,Column) EXTJS4自学手册——EXT...

    包含各种类型的extjs小图标,Extjs4小图标

    在标题和描述中提到的“Extjs4小图标”指的是ExtJS 4版本中使用的一系列图形图标,这些图标用于增强应用程序的视觉效果,提供用户友好的操作指示。 1. **图标分类**: - 图标通常分为不同的类别,如操作图标(比如...

    Extjs4 combogrid扩展

    在给定的“Extjs4 combogrid扩展”中,我们主要关注的是如何将传统的下拉框(combo)扩展为同时支持网格(grid)显示的功能。 标题中的“Extjs4 combogrid扩展”意味着我们要在ExtJS 4框架内,改造原有的 Combo ...

    EXTJS扩展例子集

    4. **主题**:EXTJS支持主题定制,开发者可以通过扩展来创建自己的UI风格。 5. **插件(Plugins)**:对于已存在的EXTJS组件,插件可以添加额外的功能,而无需修改组件的原始代码。 6. **数据代理(Data Proxy)**...

    Extjs4 grid使用例子

    在ExtJS4中,MVC帮助我们分离业务逻辑、视图和控制器,使得代码更易于维护和扩展。在这个例子中,Model定义了数据模型,View负责呈现数据,而Controller作为中间人,处理用户交互和数据更新。 2. **Grid组件**: ...

    EXTJS 4 树形表格组件使用示例

    6. **可扩展性**:EXTJS 4的设计使得树形表格组件易于扩展,你可以添加自定义的行为、插件,甚至创建自己的节点类型。 在实际应用中,我们可以通过以下步骤来使用EXTJS 4的树形表格组件: 1. **创建Store**:定义...

    ExtJs4.rar

    在本文中,我们将深入探讨ExtJS4这一版本的重要特性、改进以及它如何扩展了先前版本的功能。 首先,ExtJS4在组件化方面有了显著提升。在之前的版本中,组件系统就已经是其核心优势,而ExtJS4进一步优化了这一系统,...

    extjs动态生成model、store、panel

    extjs动态生成model、store、panel;sql拼接等多种技术难点

    Extjs树分页组件扩展

    4. 事件处理:监听数据加载和分页操作的事件,更新Tree和PagingToolbar的状态。 总的来说,“Extjs树分页组件扩展”通过对TreeLoader和PagingToolbar的定制,实现了在ExtJS树形组件中进行高效、友好的数据分页浏览...

Global site tag (gtag.js) - Google Analytics