10.3 Ext.data.Record
Ext.data.Record就是一个设定了内部数据类型的对象,它是Ext.data.Store的最基本组成部分。如果把Ext.data.Store看作是一张二维表,那么它的每一行就对应一个Ext.data. Record实例。
Ext.data.Record的主要功能是保存数据,并且在内部数据发生改变时记录修改的状态,它还可以保留修改之前的原始值。
我们使用Ext.data.Record时通常都是由create()函数开始,首先用create()函数创建一个自定义的Record类型,如下面的代码所示。
var PersonRecord = Ext.data.Record.create([
{name: 'name', type: 'string'},
{name: 'sex', type: 'int'}
]);
PersonRecord就是我们定义的新类型,包含字符串类型的name和整数类型的sex两个属性,然后我们使用new关键字创建PersonRecord的实例,如下面的代码所示。
var boy = new PersonRecord({
name: 'boy',
sex: 0
});
创建对象时,可以直接通过构造方法为对象赋予初始值,将'boy'赋值给name,0赋值给sex。
现在,我们得到了PersonRecord的实例boy,如何才能得到它的属性呢?以下三种方式都可以获得boy中name属性的数据,如下面的代码所示。
alert(boy.data.name);
alert(boy.data['name']);
alert(boy.get('name'));
这里涉及Ext.data.Record的data属性,这是定义在Ext.data.Record中的一个公共属性,用于保存当前
record对象的所有数据。它是一个JSON对象,可以直接从它里面获得需要的数据。可以通过Ext.data.Record的get()函数方便地从
data属性中获得指定的属性值。
如果我们需要修改boy中的数据,请不要使用以下方式直接操作data,如下面的代码所示。
boy.data.name = 'boy name';
boy.data['name'] = 'boy name';
而应该使用set()函数,如下面的代码所示。
boy.set('name', 'body name');
set()函数会判断属性值是否发生了改变,如果改变了,就要将当前对象的dirty属性设置为true,并将修改之前的原始值放入modified对象中,供其他函数使用。如果直接操作data中的值,record就无法记录属性数据的修改情况。
Record的属性数据被修改后,我们可以执行如下几种操作。
q commit()(提交):这个函数的效果是设置dirty为false,并删除modified中保存的原始数据。
q reject()(撤销):这个函数的效果是将data中已经修改了的属性值都恢复成modified中保存的原始数据,然后设置dirty为false,并删除保存原始数据的modified对象。
q getChanges()获得修改的部分:这个函数会把data中经过修改的属性和数据放在一个JSON对象里并返回。例如上例中,getChanges()返回的结果是{name:’body name’}。
q 我们还可以调用isModified()判断当前record中的数据是否被修改。
Ext.data.Record还提供了用于复制record实例的函数copy()。
var copyBoy = boy.copy();
这样我们就得到了boy的一个副本,它里面包含了boy的data数据,但copy()函数不会复制dirty和modified等额外的属性值。
Ext.data.Record中其他的参数大多与Ext.data.Store有关,请参考与Ext.data.Store相关的讨论。
分享到:
相关推荐
《深入浅出Ext_JS:数据存储与传输》 在Web应用开发中,数据的存储与传输是核心环节,尤其在富客户端(Rich Internet Application, RIA)开发中,JavaScript库Ext JS提供了强大的数据管理功能。本文将围绕Ext JS的...
《深入浅出Ext JS》是Ext JS领域内的经典著作,由浅入深、循序渐进地对Ext JS各方面的知识进行了全面而系统的阐述。全书由一个可以引领读者快速入门的“Hello World”示例开篇,紧接着对Ext JS的事件、核心组件、...
目录 第1章EXT概述 第2章EXT框架基础 第3章表格控件 第4章表单与输入控件 第5章树形结构 第6章拖放 第7章弹出窗口 第8章布局 第9章工具栏和菜单 第10章数据存储与传输 第11章实用工具
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
《深入浅出ExtJS》是ExtJS领域内的经典著作,由浅入深、循序渐进地对ExtJS各方面的知识进行了全面而系统的阐述。全书由一个可以引领读者快速入门的“HelloWorld”示例开篇,紧接着对ExtJS的事件、核心组件、表格和...
深入浅出EXT JS 书中源码 书籍目录如下: 1 EXT书中概述 2 EXT框架基础 3 表格空间 4 表单输入空间 5 树形结构 6 拖放 7 弹出窗口 8 布局 9 工具栏和菜单 10 数据存储和传输 11 使用工具 12 一个完整的EXT应用 13 ...
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
全书由一个可以引领读者快速入门的“hello world”示例开篇,紧接着对ext js的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具和扩展等进行了详细讲解,最后以一...
在“ExtJS深入浅出介绍之数据存储与传输”这一主题中,我们将深入探讨ExtJS如何处理后台数据的存储和交换。 一、数据存储 1. **Store(数据存储)**:在ExtJS中,Store是数据的核心管理器,用于存储和管理数据集。...
第1章 EXT概述 1 第2章 EXT框架基础 11 第3章 表格控件 28 第4章 表单与输入控件 ...第10章 数据存储与传输 230 第11章 实用工具 256 第12章 一个完整的EXT应用 317 第13章 通过Ext Framework合理地应用EXT 339
目录 第1章EXT概述 第2章EXT框架基础 第3章表格控件 第4章表单与输入控件 第5章树形结构 第6章拖放 第7章弹出窗口 第8章布局 第9章工具栏和菜单 第10章数据存储与传输 第11章实用工具
目录 第1章EXT概述 第2章EXT框架基础 第3章表格控件 第4章表单与输入控件 第5章树形结构 第6章拖放 第7章弹出窗口 第8章布局 第9章工具栏和菜单 第10章数据存储与传输 第11章实用工具
本书是《深入浅出Ext Js》的第2版,涵盖了EXT 3.x的新特性,并对上一版进行增补。书中详细讲述了EXT的事件、核心组件、表格和表单等各种控件、树形结构、拖放、弹出窗口、布局、数据存储和传输、实用工具等内容,每...
深入浅出EXTJS 的PDF 文档无疑是一个宝贵的资源,适合那些希望深入了解该框架的开发者。以下是对文档中提到的一些关键知识点的详细解释: 1. **Ext.data**:EXTJS 的数据模块是其核心组件之一,它提供了一种在...