AJax技术

store和reader使用技巧

字号+ 作者:H5之家 来源:H5之家 2017-10-10 16:03 我要评论( )

最近老大要求使用Extjs写前端,故研究了一番。这玩意功能比起jquery-ui等确实功能强大很多,效果也比较高大上,但是确实比较难使用。本人智商欠费各种坑都跳遍了

标签:class   style   代码   使用   数据   服务器   js   log   

  最近老大要求使用Extjs写前端,故研究了一番。这玩意功能比起jquery-ui等确实功能强大很多,效果也比较高大上,但是确实比较难使用。本人智商欠费各种坑都跳遍了才试出成果,现主要记录下store和reader的心得。

  在介绍store之前先说下Model,Model代表应用程序管理的一些对象。例如,我们想在系统中建模一个现实世界,我们将为这世界中的一些物体像使用者、产品和汽车等对象定义一个Model,这些Model对象将被系统注册,被Store(仓库)使用,然后这些仓库又被 Ext中许多与数据绑定的组件所使用。

  Store 大意是: 仓库、存储的意思. Store类封装了一个客户端缓存,用于存储 Model 对象. Stores 通过一个代理 Proxy 来加载数据, 并提供函数来 排序, 过滤 以及查询 内部所包含的 model 实例.

  创建Store很简单,只需要传入 Model 以及用来加载/保存 数据的Proxy作为配置项即可:

// 建立一个store要使用的 model Ext.define(‘User‘, { extend: ‘Ext.data.Model‘, fields: [ {name: ‘id‘,   type: ‘int‘}, {name: ‘name‘,  type: ‘string‘}, {name: ‘age‘,  type: ‘int‘} ] }); var myStore = Ext.create(‘Ext.data.Store‘, { model: ‘User‘, proxy: { type: ‘ajax‘, url: ‘/users.json‘, reader: { type: ‘json‘ } }, autoLoad: true });

在上面的例子中,我们配置了一个 AJAX 代理,从 url ‘/users.json‘ 加载数据. 并告诉Proxy使用JsonReader来解析服务器返回的数据为Model对象.

  reader 通常用于翻译数据,使其被加载为 Model 实例或Store, 该数据一般是一个AJAX请求的响应数据. 一般情况下不需要直接创建一个Reader实例, 因为Reader总是和Proxy一起使用, 且其将使用Proxy的reader 配置属性配置。针对上面的代码,reader属性将从服务端读取数据,同时将接受如下的响应:

[ { "id": 1, "name": "Ed Spencer", "age": "22" }, { "id": 2, "name": "Abe Elias", "age": "45" } ]

  但是假如你已经有了一份定义好的JSON格式,而且看起来和我们提供的那种不太相似,那么你可以通过JsonReader的配置选项来使其可以解析你的格式,例如,你的数据有个root节点,如下:

{ "users": [ { "id": 1, "name": "Ed Spencer", "age": "22" }, { "id": 2, "name": "Abe Elias", "age": "45" } ] }

为了解析这个,我们只需要传递一个root配置以匹配以上的"users":

reader: { type: ‘json‘, root: ‘users‘ }

或者更复杂的JSON格式,有些文档数据经常会以以下结构提供数据:

{ "total": 42, "offset": 0, "users": [ { "id": "ed-spencer-1", "value": 1, "user": { "id": 1, "name": "Ed Spencer", "age": "23" } } ] }

以上示例中的记录数据是在"users"数组中嵌套的一个额外级别,其中的每个“user”项目中都包含有额外元数据(例如本例中的’id‘和‘value’). 为了解析以上JSON数据中的每个‘user‘项中的数据, 需要特别指定record配置,如下所示:

reader: { type : ‘json‘, root : ‘users‘, record: ‘user‘ }

响应的元数据

服务端可以在其响应中返回元数据,除了记录数据,其中数据本身的描述数据的属性集或用于重新配置的读取器。 为了在响应中获取元数据,需要给响应数据的根简明加上一个‘metaData‘属性. 元数据属性可以包含任何东西, 但若Reader存在,其还支持的一个特定设置属性:

Extjs 4.2使用心得 --- store和reader使用技巧,布布扣,bubuko.com

Extjs 4.2使用心得 --- store和reader使用技巧

标签:class   style   代码   使用   数据   服务器   js   log   

原文:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JAVA EE 项目常用知识 之AJAX技术实现select下拉列表联动的两种

    JAVA EE 项目常用知识 之AJAX技术实现select下拉列表联动的两种

    2017-09-11 11:42

  • 前端小白之每天学习记录

    前端小白之每天学习记录

    2017-08-14 17:01

  • [ajax 学习笔记] ajax初试

    [ajax 学习笔记] ajax初试

    2017-07-15 08:03

  • JavaScript初探系列之Ajax应用

    JavaScript初探系列之Ajax应用

    2017-07-03 14:00

网友点评