体验 EXTJS4 的 MVC
来源:互联网 发布:mac上新建文件夹 编辑:程序博客网 时间:2024/06/05 19:27
EXT4终于发布了,厌倦了EXT3.x生成的臃肿的HTML代码? EXT4在这方面的确做了很大的优化。其中带了资源占用减少和性能的提升。而EXT4引入的MVC模式更是将视图与代码逻辑分离。除了语法上与旧版有些许不同外。上手倒还是很快。但很快遇到的问题也接踵而至。
在EXT4中 CRUD操作甚至能让你从烦人的FORM提交解放出来。直接一条 Store.sync()搞定。非常方便。但马上我便遇到了第一个问题。倘若提交失败,服务器返回的错误信息如何显示?如果只是单条记录的操作,您可以使用 Model的 save方法来完成。例如:
var rs = Ext.ModelManager.create(values,'OA.model.ChangePasswordModel');rs.save({success:function(r,o){var o=Ext.decode(o.response.responseText); Ext.Msg.show({title:'温馨提示',msg:o.message,icon:Ext.Msg.INFO,buttons:Ext.Msg.OK,fn:function(){win.close();},scope:this})},failure:function(r,o){var o = o.request.scope.reader.jsonData;Ext.Msg.show({title:'温馨提示',msg:o["message"],icon:Ext.Msg.ERROR,buttons:Ext.Msg.OK})},scope:this});如果是多条记录的删除操作呢?
在阅读了 Store Bath Proxy等类的源代码后。发现错误信息可以统一使用 侦听exception事件来完成。
遇到的第二个问题是,如果您要删除store中的一些记录可以使用 Store.remove(records)来完成。然后调用 sync 与服务器同步。但如果服务器同步失败……后果是本地已经删除的 记录无法恢复。最后,我只得重写了两个方法。1、在remve的时候将记录保存在要删除的记录列表中。在 onDestroyRecords(私有方法 在服务器返回后调用)。再删除这个列表中的记录。代码如下:
remove: function(records, /* private */ isMove) { if (!Ext.isArray(records)) { records = [records]; } /* * Pass the isMove parameter if we know we're going to be re-inserting this record */ isMove = isMove === true; var me = this, sync = false, i = 0, length = records.length, isPhantom, index, record; for (; i < length; i++) { record = records[i]; index = me.data.indexOf(record); if (me.snapshot) { me.snapshot.remove(record); } if (index > -1) { isPhantom = record.phantom === true; if (!isMove && !isPhantom) { // don't push phantom records onto removed me.removed.push(record); } sync = sync || !isPhantom; } } me.fireEvent('datachanged', me); if (!isMove && me.autoSync && sync) { me.sync(); } }, onDestroyRecords: function(records, operation, success){ if (success) { var me = this, i = 0, length = records.length, data = me.data, snapshot = me.snapshot, record; for (; i < length; ++i) { record = me.getById(records[i].get(records[i].idProperty||'id')); if(null !== record) { record.unjoin(me); data.remove(record); if (snapshot) { snapshot.remove(record); } }else{ console.log(records[i]); } } me.removed = []; } },
- 体验 EXTJS4 的 MVC
- ExtJS4的MVC模式实例
- ExtJS4的MVC模式实例
- 最简单的ExtJS4的MVC实例
- 最简单的ExtJS4的MVC实例
- 最简单的extjs4的MVC实例
- Extjs4.0 MVC实例
- Extjs4.1MVC详解
- EXTJS4.0 MVC 解析
- EXTJS4 MVC框架
- EXTJS4 MVC模式笔记
- ExtJs4 与MVC
- ExtJS4.2 MVC
- EXTJS4 MVC框架
- ExtJs4 MVC学习
- Extjs4.1MVC详解
- Extjs4.2 MVC框架
- Extjs4---用MVC做的后台管理系统 之一
- 最长不下降子序列DP的水题
- Vim + Cscope打造Linux下的Source Insight
- Oracle的DataFile大小问题
- linux安装rpm
- oracle 删除表空间和用户
- 体验 EXTJS4 的 MVC
- ORA-00060 Deadlock detected
- CTreeCtrl控件添加排序功能
- linux中用户组的管理(setuid、setgid)
- Linux引导流程步骤四、添加用户步骤
- SQLITE3,C语言使用
- HDU 4143 A Simple Problem
- LINUX用户组权限
- linux系统管理