溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Ext.js4.2.1中Ext.data.Record是什么

發(fā)布時(shí)間:2021-12-03 14:44:17 來(lái)源:億速云 閱讀:204 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)Ext.js4.2.1中Ext.data.Record是什么,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

Ext.data.Record就是一個(gè)設(shè)定了內(nèi)部數(shù)據(jù)類(lèi)型的對(duì)象,它是Ext.data.Store的最基本組成部分。如果把Ext.data.Store看作是一張二維表,那么它的每一行就對(duì)應(yīng)一個(gè)Ext.data.Record實(shí)例。

Ext.data.Record的主要功能是保存數(shù)據(jù),并且在內(nèi)部數(shù)據(jù)發(fā)生改變時(shí)記錄修改的狀態(tài),它還可以保留修改之前的原始值。

我們使用Ext.data.Record時(shí)通常都是由create()函數(shù)開(kāi)始,首先用create()函數(shù)創(chuàng)建一個(gè)自定義的Record類(lèi)型,如下面的代碼所示:

  1. var PersonRecord = Ext.data.Record.create([  


  2.     {name: 'name', type: 'string'},  

  3.   

  4.     {name: 'sex', type: 'int'}  

  5.   

  6. ]);  

PersonRecord就是我們定義的新類(lèi)型,包含字符串類(lèi)型的name和整數(shù)類(lèi)型的sex兩個(gè)屬性,然后我們使用new關(guān)鍵字創(chuàng)建PersonRecord的實(shí)例,如下面的代碼所示:

  1. var boy = new PersonRecord({  

  2.   

  3.     name: 'boy',  

  4.   

  5.     sex: 0  

  6.   

  7. });  

創(chuàng)建對(duì)象時(shí),可以直接通過(guò)構(gòu)造方法為對(duì)象賦予初始值,將'boy'賦值給name,0賦值給sex。

現(xiàn)在,我們得到了PersonRecord的實(shí)例boy,如何才能得到它的屬性呢?以下三種方式都可以獲得boy中name屬性的數(shù)據(jù),如下面的代碼所示:

  1. alert(boy.data.name);  

  2.   

  3. alert(boy.data['name']);  

  4.   

  5. alert(boy.get('name'));  

這里涉及Ext.data.Record的data屬性,這是定義在Ext.data.Record中的一個(gè)公共屬性,用于保存當(dāng)前record對(duì)象的所有數(shù)據(jù)。它是一個(gè)JSON對(duì)象,可以直接從它里面獲得需要的數(shù)據(jù)??梢酝ㄟ^(guò)Ext.data.Record的get()函數(shù)方便地從data屬性中獲得指定的屬性。

如果我們需要修改boy中的數(shù)據(jù),請(qǐng)不要使用以下方式直接操作data,如下面的代碼所示:

  1. boy.data.name = 'boy name';  

  2.   

  3. boy.data['name'] = 'boy name';  

而應(yīng)該使用set()函數(shù),如下面的代碼所示:

  1. boy.set('name', 'body name');  

set()函數(shù)會(huì)判斷屬性值是否發(fā)生了改變,如果改變了,就要將當(dāng)前對(duì)象的dirty屬性設(shè)置為true,并將修改之前的原始值放入

modified對(duì)象中,供其他函數(shù)使用。如果直接操作data中的值,record就無(wú)法記錄屬性數(shù)據(jù)的修改情況。

  • Record的屬性數(shù)據(jù)被修改后,我們可以執(zhí)行如下幾種操作。

  • commit()(提交):這個(gè)函數(shù)的效果是設(shè)置dirty為false,并刪除modified中保存的原始數(shù)據(jù)。

  • reject()(撤銷(xiāo)):這個(gè)函數(shù)的效果是將data中已經(jīng)修改了的屬性值都恢復(fù)成modified中保存的原始數(shù)據(jù),然后設(shè)置dirty為false,并刪除保存原始數(shù)據(jù)的modified對(duì)象。

  • getChanges()獲得修改的部分:這個(gè)函數(shù)會(huì)把data中經(jīng)過(guò)修改的屬性和數(shù)據(jù)放在一個(gè)JSON對(duì)象里并返回。例如上例中,getChanges()返回的結(jié)果是{name:’body name’}。

  • 我們還可以調(diào)用isModified()判斷當(dāng)前record中的數(shù)據(jù)是否被修改。

Ext.data.Record還提供了用于復(fù)制record實(shí)例的函數(shù)copy()。

  1. var copyBoy = boy.copy();  

這樣我們就得到了boy的一個(gè)副本,它里面包含了boy的data數(shù)據(jù),但copy()函數(shù)不會(huì)復(fù)制dirty和modified等額外的屬性值。

關(guān)于“Ext.js4.2.1中Ext.data.Record是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI