预览ExtJS 4.0的新功能(四):焕然一新的Store/Proxy

焕然一新的Store/Proxy

转载请注明出处Ext中文网http://www.ajaxjs.com

上期讲到,Ext JS4 可以允许我们定义业务模型之间的关系(Association),在浏览器客户端就可以描述我们的业务模型如何,甚至灵活调用域对象(Domain Object)也不是一件难事。可是如果没用实体数据,业务模型也只是“空壳”,缺了内容也不存在什么“UI 数据绑定”一说。当然,Ext 中,我们可以为 Model
调入与之 Schmea 匹配的数据的,关键问题是怎么去做?明显,浏览器客户端决不可能自己出现实体数据,却还是由服务端或者 LocalStorage 中得到数据,浏览器或客户端内存就是”数据的中转站“,——这点很好理解。Ext 中约定,准备好原始数据之后,Proxy 对象负责把到手的实体数据填充到 Model 之中……至于 Proxy,老早就有,我们并不陌生,只是以前 Proxy 直接与 Store 打交道,而现在由于有 Model 的出现,于是向 Model 交互则不需要向 Store 进行处理。但 Store
并不是消失了,而是内部透过 API 自动创建, Store 依然存在。我们可以这样认为,由于有 Model 的介入和 Proxy 的重新协调,两者结果使得 Store 的角色愈加明确,可以说 Store 作为数据内容存放地方的意味更加明显,简单说,相当于数据仓库。

相对于旧版 Ext(3.0/2.0/1.0),值得一说的便是 Record,它比较单一,不过为了对比前后差异,我们贴出旧 Record 图对比如下。以前创建 Store 的工作主要是围绕Proxy/Reader 而创建的,可以说 Proxy/Reader 正是 Store 所依赖的对象,其中内容有定义数据层的如何获取,怎么解析等等……

4.0中加入 Model。如下面的略图,简单说明了 Model 组成部分,新版内容是蓝色标记的。上期已经为大家介绍过,如今剩下还有 Store 和 Proxy……

上图第二个 Data 就是 Store了——就以 Store 的介绍开始本文的历程!

Store

Model 是数据模型,Store 则是数据的容器。从数据库的角度讲,Store 类封装了一个客户端的记录对象的缓存,为诸如 GridPanel、Tree 和 DataView等 UI 组件提供了数据的入口。4.0 的 Store 简化了许多,显得很清爽,呵呵,这固之然为表面所折射出来的感觉,然而我认为这是 Proxy、Reader/Writer 更细颗粒的职责分工下以及引入 Model 后必然带来的结果。更严格地说,Store 在 Ext 4 中被称作“Ext.data.AbstractStore”,代表抽象的
Store 负责和 Proxy 和 Reader 耦合,却没有任何的实体数据的存储 representation。也就是说  AbstractStore 只是各对象之间耦合的一些共性内容,如真正的数据区域是根据不同组件而不同的,如一般 Store 就是 Ext.util.MixedCollection,而 Tree 组件就是 Ext.data.Tree。

以最常用的 JsonStore 为例子,一般用法如下:

Edit 2011-9-22 示例代码可能与最新版本的 Ext Model 有区别,但不影响主干意思——感谢 Thanks to QiuQiu/太阳。

var store = new Ext.data.JsonStore({
// store configs
autoDestroy: true,
storeId: 'myStore'

proxy: {
type: 'ajax',
url: 'get-images.php',
reader: {
type: 'json',
root: 'images',
idProperty: 'name'
}
},

// 可选的,也可以指定Model名称
fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date'}]
});

样本数据如下:

{
images: [
{name: 'Image one', url:'/GetImage.php?id=1', size:46.5, lastmod: new Date(2007, 10, 29)},
{name: 'Image Two', url:'/GetImage.php?id=2', size:43.2, lastmod: new Date(2007, 10, 30)}
]
}

我们可以通过 API 来直接了解新的 Store 构造,首先是 Store 的配置项:

针对排序和数据筛选的问题,Ext 提供了 sort 和 filter 对象来解决。下面的方法有相关 sort/fitler 的方法说明:

Ext.data.AbstractStore 继承于 Ext.util.Observable,它利用观察者来广播消息(pub/sub),达到与其他组件通讯的目的。Store 事件如下:

至于分页方面,Ext 4没有变化,依然通过 Store 来实现控制。

 

请继续,Proxy 介绍

转载请注明出处Ext中文网http://www.ajaxjs.com)。

时间: 2024-07-29 09:09:32

预览ExtJS 4.0的新功能(四):焕然一新的Store/Proxy的相关文章

预览ExtJS 4.0的新功能(六):读写器/Opeartion

 转载请注明出处Ext中文网 (http://www.ajaxjs.com ).   预览ExtJS 4.0的新功能(六):读写器/Opeartion 许久未更新Blog了,跟大家说声不好意思,要不是工作特忙,以及游戏特吸引人,不然早就写完了,呵呵.当然还离不开夜兄的好言鼓励,一路有大伙总比一个人不知所然强多了. 下面内容大多源自翻译-- Ext.data.Reader 相信我们并不陌生Reader.虽然Ext 4.0的reader依然发挥着它的解析原始数据的职能,主要是转换特定的数据结构,不过

预览ExtJS 4.0的新功能(二):客户端的对象关系映射(ORM)

4.0之前,Ext 的功能已经十分丰富,数据层却难以令人满意.作为 UI 框架,数据层可能不是重点,但明显攸关到业务顺利的展开与否.然而,3.0 之后,虽然过增加了 Ext.data.Api/REST/Direct 等的新协议,但无论 3.0 还是 2.0,Ext.data.* 底层仍维持 1.0 的对象模型.越来越多的新协议和新机制加入到 Ext.data.*后,反而造成 API 逾加凌乱.这样就有了改造 data 的必要了.可喜的是,4.0 中已经重构 Ext.data.* 部分,重点解决旧

预览ExtJS 4.0的新功能(五):焕然一新的Store/Proxy

接上文 Proxy Ext.data.Proxy 是一个十分关键的数据通讯类.Proxy 直译"代理",可数据怎么能够代理?有点不通!Proxy 到底指的是什么意思呢? 依小弟浅见,定义 Proxy 就是定义数据源,至少 Ext 中 AjaxProxy/ScriptProxy/LocalProxy/SessionProxy 表现如此.当 Store 要为Ext.data.Model4 加载或者保存数据的时候,必须通过这个 Proxy 类.具体说,Proxy的操作就是将所有最终的数据操作

预览ExtJS 4.0的新功能/新特性(一):渲染组件的方式

转载请注明出处Ext中文网(http://www.ajaxjs.com). ExtJS 3.3的下一个版本就是4.0.--什么!?您不知道?那就让我们为你展开新一段的 Ext 之旅吧! 一.渲染组件的方式 话说 ExtJS Roadmap(新版本线路图)其中重要的一项就是"Rearchitected component rendering system - smaller, faster and simpler than ever before",重新编制组件的渲染架构,目标是比以前更

预览ExtJS 4.0的新功能(三):客户端数据层的革新:引入ActiveRecord模式

转载请注明出处Ext中文网 (http://ajaxjs.com). Ext JS 4最强大的机能之一就是将模型的关系映射链接到一起.在 Ext 4 数据模型中,这种链接关系是通过关联操作(associations)来完成的.在应用中定义不同物件的关系是非常自然的.比如说,在一个食谱数据库中,一条食谱可能会有多条评论,多条评论又可能为同一作者所写,而作者又可以创造多条食谱.透过定义这种链接关系可以让你以更直观地更强大的方式去操纵数据. 一.预备知识 首先是 belongTo 管关联.何谓"bel

ASP.NET 2.0的新功能

ASP.NET 2.0的新功能 ASP.NET 2.0提高ASP.NET通过增加一些新的特点. -------------------------------------------------- ------------------------------ 改进ASP.NET 2.0中 ASP.NET 2.0的目的是使Web开发更容易和更快. 设计目标为ASP.NET 2.0 : 提高生产率,消除70 %的代码 使用相同的控制,所有类型的设备 提供一个更快更好的Web服务器平台 简化汇编和安装

《圣殿祭司的ASP.NET4.0专家技术手册》----1-2 .NET 4.0平台新功能概览

1-2 .NET 4.0平台新功能概览 圣殿祭司的ASP.NET4.0专家技术手册 .NET平台版本从1.0.1.1.2.0.3.0.3.5不断演进.最新4.0版的重要改进如下: NET Framework 4.0 Visual C# 2010 Visual Basic 2010 Visual F# 2010(或F# 2.0) 新的CLR 4.0运行时 DLR动态语言运行时(Dynamic Language Runtime) ASP.NET 4.0 ASP.NET MVC 2.0(最新版为4.0

《圣殿祭司的ASP.NET4.0专家技术手册》----2-1 C# 4.0语言新功能

2-1 C# 4.0语言新功能 圣殿祭司的ASP.NET4.0专家技术手册 C# 4.0新增的语言功能,除了命名实参和可选实参(VB早已支持)较为常用,其他功能几乎是从动态基础衍生出来的便利性或灵活性,新功能如下: 命名实参和可选实参(Named and Optional Arguments): Dynamic动态类型(Dynamic Type): 共变量与反变量(Covariance and Contravariance): Office可程序性支持(Office Programmabilit

Android Studio 3.0 引入新功能,支持Kotlin语言

除了 Android 8.1 Oreo 开发者预览版,Google 今日还正式发布了 Android Studio 3.0 ,为其 IDE 引入了一系列新功能. Android Studio 3.0 专注于加速 Android 应用开发,包含大量更新内容,主要分为三个功能块,包括: 一套用于快速诊断性能问题的新的应用程序分析工具 支持 Kotlin 编程语言 用于加速在最新的 Android Oreo API 上开发的新工具 更新概述: 开发 Kotlin 编程语言支持 -- 正如谷歌在 Goo