Ext.data.Record使用樣本

來源:互聯網
上載者:User

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等額外的屬性值。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.