首次使用ExtJS4.2遇到的一些常见问题

ExtJS创建Store的两种方式

//NO.1 
var MemberShipStores = Ext.extend(Ext.data.Store,{
	proxy: new Ext.data.HttpProxy({
		type:'ajax',
		url:'/lmp/memberShip/memberShipCustomer.do',
		reader:{
			type:'json',
			root:"membership"
		}
	}),model:'memberShipModels'
});
//NO.2 
var MemberShipStores = new Ext.data.JsonStore({
proxy :{
	type:'ajax',
		url:'/lmp/memberShip/memberShipCustomer.do',
		reader:{
			type:'json',
			root:"membership"
		}
},model:'memberShipModels'
});

很显然这两种方式创建出来的数据虽然都可以拿到,但是在使用过程中会遇到一些问题比如第二种创建方式,如果MemberShipStores.load()之后,引用该store的所有控件的值,因为这仅仅是创建了一个对象,多个控件共用一个store。下面就说一下我用gridPanel时所出现的问题,可能因为自己不会表达问题,百度了很久也没有个确切的答案,不多说了,先上图:

在这里插入图片描述

一个tabPanel页面
问题:点数记录里面是一个gridPanel,当我想查看两个用户的点数记录的时候就出现了问题,出现问题时,我绑定的store使用的第二种方法创建的,就会导致,当第一个界面里面的store改变之后,第二个界面也会跟着第一个改变,很显然,它们两个共用了一个store才导致这样的错误结果。

解决方案
上面我们用了两种不同的方法创建的store,确切的来说,这两种方法一个是定义,一个是创建
第一种方法则是定义了一个类,通过这个类可以创建不同的对象,第二种方法则是创建了一个对象,一个对象存放一组数据供给我们的表格使用,所以会出现问题,而使用第一种时,绑定store时就可以new MemberShipStores();

var memberShipStores =new MemberShipStores();

var customerGrid = Ext.create('Ext.grid.Panel', {
			id:'customerGrid'+row.get('customerId'),
			width : 798,
			height : 463,
			autoScroll : true,
			border : false,
			buttonAlign : 'right',
			store:memberShipStores,
			columns : [ {
				header : '會員等級',
				dataIndex : 'type',
				width : 120,
				sortable : true,
				align : 'center',
				renderer:CustomerTypeConvert
			}, {
				header : '會員開始日',
				dataIndex : 'startDate',
				width : 120,
				sortable : true,
				align : 'center'
			}
}

使用第一种的方式的话,每打开一个gridPanel就会有一个独立的对象去进行操作,这样就不会造成页面紊乱了。

第一次写文章,请CSDN各位大佬带带我这个小萌新,写的不好请指出,嘿嘿嘿,评论区期待与各位大佬交流!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值