日期:2014-05-16  浏览次数:20345 次

extjs4 各种怪异问题

? ? 用extjs4 已经有一段时间了,过去开发的时候用过extjs2.2 因为放下了两年所有很多东西记得不是很清楚了,现在又直接使用4 突然发现这个世界变得太快连代码都变得这么快,大部分东西都完全不一样了,组建,数据交互.....,因为有采用了extjs4的新标准MVC 哎现在这个前段也搞什么三层,软件架构真是越来越复杂。在此主要整理记录一下在4中遇到一下比较奇怪的问题和解决方法,

??? 1: MVC 初始化的问题,MVC 的核心是Controller 相当于Servlet 大量逻辑性的代码都写在里边主要需要引入 stores,

views,models 只要需要显示在页面的view都要引入到views 数组中,MVC 在加载Controller 的时候会创建stores 中所有的stores ,其他的views ,models 则不会创建对象,不知道他们这样设计的目的在于什么?

??? 2: MVC 中 一般在View 中包含一个Store ,而在Store中会包含一个Model 的属性,view中包含store 例如store:'config.configmanage.DPCGridPanelStore', 只需要写入store的相对路径即可,但是 store 中包含model 则必须写入绝路径 model:'DELTA.model.config.configmanager.DPCModel', 不知道他们这样设计目的在于什么?

??? 3: 属性赋值 :创建组建时候直接给组建的属性赋值 和通过Ext.apply()给组建赋值有区别,其中有一个应用就是



?tab 中新增一个grid 第一次没有问题,但是如果把这个tab 关闭 在点击新增这个grid 这个grid的就会显示出现问题,搞了好长时间发现吧 分页bar 通过apply的方式赋给grid 就不会出现这个问题,如果是直接配置给gird 就会出问题实在是不能理解。

??? 4: baseParams 使用 一般在条件分页的时候使用 在使用2.2的时候 直接通过store.load({baseParams:{a:a}}); 现在通过这个方法没法执行具体使用方法

var new_params = { ndpcId:id};
			    Ext.apply(win.query("#dpcCheckBoxTree")[0].getStore().proxy.extraParams,new_params);
				win.query("#dpcCheckBoxTree")[0].getStore().load();

?

5: 在使用可编辑Grid 的时候 最后一步往往都是获得修改的数据集提交到后台

extjs3 的时候 通过调用store的getModifyRecords() 的方法 4以后改成getUpdatedRecords但是在调用后发现修改过的 model[] 的长度都是0 。解决办法

ext 的模型类:model有如下一个熟悉

idProperty ?: String

The name of the field treated as this Model's unique id (defaults to 'id').(唯一识别store中记录的字段)

默认为'id',如果没有配置这个属性,就需要在自己定义的model中提供一个名叫'id'的唯一主键。或者配置成自己的主键如:

Ext.define('Tms.model.QualificationInfo', {

extend : 'Ext.data.Model',

        idProperty : 'qiId',//定义自己的主键

fields : [{

name : 'qiId',

type : 'int',

useNull : true

}, {

name : 'qtId',

type : 'int',

useNull : true

}, 'qiName', 'qiParents', 'qiNovitiate', 'qiTrainingTask']

});

?

?

6: 在使用tree的时候出现点击树节点出现等待的符号无法进入的原因是 后台返回的tree 节点的id 有重复导致。

?

待续。。。。。。。。