zoukankan      html  css  js  c++  java
  • Ext.data.Record

    Ext.data.Record

    2013724

    15:26

    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的属性数据被修改后,我们可以执行如下几种操作。

        commit()(提交):这个函数的效果是设置dirtyfalse,并删除modified中保存的

    原始数据。

       reject()(撤销):这个函数的效果是将data中已经修改了的属性值都恢复成

    modified中保存的原始数据,然后设置dirtyfalse,并删除保存原始数据的modified对象。

       getChanges()获得修改的部分:这个函数会把data中经过修改的属性和数据放在一个

    JSON对象里并返回。例如上例中,getChanges()返回的结果是{name:body name}

       我们还可以调用isModified()判断当前record中的数据是否被修改。

           Ext.data.Record还提供了用于复制record实例的函数copy()

     

    var copyBoy =boy.copy();

     

    这样我们就得到了boy的一个副本,它里面包含了boy的data数据,但copy()函数不会复制dirty和modified等额外的属性值。

     

     

     

     

     

     

     

     

     

     

     

    已使用 Microsoft OneNote 2013 创建。





  • 相关阅读:
    [JLOI2011] 飞行路线
    高精度运算模板
    Dijkstra算法模板
    [SDOI2010] 外星千足虫
    [SDOI2006] 线性方程组
    [CTSC2014] 企鹅QQ
    模板三连击:树状数组+线段树+主席树
    [ZJOI2008] 树的统计
    [国家集训队] 礼物
    [洛谷P4720] [模板] 扩展卢卡斯
  • 原文地址:https://www.cnblogs.com/babyhhcsy/p/3434675.html
Copyright © 2011-2022 走看看