ExtJS4 Store分析

Store在ExtJS中的分量相当重,从server端获取数据,前台控件展现数据,都离不开它。所以它实际上相当于一个数据访问层,连接后台以及前台数据展示控件。要想理解必须要仔细阅读ExtJS的文档以及源代码。说实话我不喜欢这种Store的封装,有时候显得太复杂。其中最麻烦的一点就是我的server返回的数据必须跟前台的需要的数据格式完全一致,但是很多时候后台返回的数据格式并不是完全满足前台展示需求,前台必须要进行转化才行。譬如调用现有第三方的API,它先于我的前台代码存在,不可能去修改第三方API来满足你前台的需求。这个时候要进行格式转化,而这个实际上不是那么容易的一件事情,必须要理解Store的原理。


Store与数据展示控件

Store基本上分两种,client Store和server Store。所谓client store指的是数组之类的,不需要访问server端获取数据。server store自然是要访问server端才能获取数据。但是不管哪种,都是由Store派生出来的,而所有的数据展示控件以Store作为接口。这样Store只要提供一些基本的方法以给数据展示控件获取需要展示的数据,譬如getRange, get之类的。


Server Store如何获取数据

以下简称为Store。Store首先是有Proxy,利用Proxy来代理各种不同的操作,如增删改查。而Store跟Proxy之间的交互是通过Operation这个对象的,它也就代表具体的操作。Store把各种请求和参数放到Operation对象里面,然后传给Proxy。Proxy根据Operation决定用Reader来加载(Load)数据还是用Writer来增删改数据。当Reader/Writer操作成功之后,Reader/Writer负责把server返回的数据构造成指定的Model集合,放入ResultSet。接下来Proxy再把这个ResultSet放入Operation通过Store.onProxyLoad回传给Store。这样Store拿到server的数据然后负责加载到Store里面。从这个大概的过程看出来,要想做数据格式的转换,最好的地方应该在Reader/Writer里面,而这里面有有个configureExtractors和extractValues。再具体就看ExtJS的源代码了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值