W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
上面我們介紹了DataType可以用于描述實(shí)體數(shù)據(jù),就像是數(shù)據(jù)字典。事實(shí)上,DataType不僅僅可以用來描述實(shí)體數(shù)據(jù),DataType用于為Dorado描述所有數(shù)據(jù)。幾種DataType的繼承關(guān)系圖如下(用于描述實(shí)體數(shù)據(jù)的其實(shí)只是最為常用的EntityDataType):
最上面的DataType用于那些簡單的數(shù)據(jù)類型,例如String、int、boolean等。Dorado中默認(rèn)已經(jīng)對下列的數(shù)據(jù)類型創(chuàng)建了相應(yīng)的DataType。
上述這些DataType都已被預(yù)先的注冊到了系統(tǒng)當(dāng)中,只需要直接利用名稱引用就可以了。例如下面的代碼指定了某文本編輯框?qū)?yīng)的數(shù)據(jù)類型是float。這樣,用戶將無法在該編輯框中輸入非浮點(diǎn)數(shù)的內(nèi)容。
new Dorado.widget.TextEditor({ dataType: "float" });
EntityDataType是專門用于描述那些實(shí)體數(shù)據(jù)的類型。實(shí)體數(shù)據(jù)類型特指那些包含一到多個(gè)子屬性的數(shù)據(jù)類型,在JavaScript中實(shí)體數(shù)據(jù)都是以JSON對象的形式存在的。為了描述實(shí)體數(shù)據(jù)類型中的每一個(gè)屬性,Dorado提供了專用的屬性描述對象——Dorado.PropertyDef。每一個(gè)PropertyDef中都包含數(shù)據(jù)類型、校驗(yàn)規(guī)則、顯示格式、是否只讀等一系列的屬性。
var dataTypePhone = new Dorado.EntityDataType({
name: "Phone",
PropertyDefs: [
{ name: "product", label: "型號", required: true },
{ name: "manufacturer", label: "生產(chǎn)商" },
{ name: "type", label: "機(jī)型",
mapValues: [
{ key: "A", value: "直板" },
{ key: "B", value: "翻蓋" },
{ key: "C", value: "滑蓋" },
{ key: "D", value: "旋蓋" },
{ key: "Z", value: "其它" }
]
},
{ name: "price", label: "價(jià)格", dataType: "float", displayFormat: "¥#,##0.00" },
{ name: "length", label: "長", dataType: "float", displayFormat: "0.0mm" },
{ name: "width", label: "寬", dataType: "float", displayFormat: "0.0mm" },
{ name: "height", label: "高", dataType: "float", displayFormat: "0.0mm" },
{ name: "screen", label: "屏幕", dataType: "float", displayFormat: "0.0\"" },
{ name: "touchScreen", label: "觸摸屏", dataType: "boolean" },
{ name: "cpu", label: "CPU" },
{ name: "os", label: "操作系統(tǒng)" },
{ name: "comment", label: "備注" }
]
});
$dataTypeRepository.register(dataTypePhone);
上面的代碼定義了一個(gè)包含了若干屬性信息的DataType。利用此DataType制作出的頁面可見Dorado 7 Client Edition提供的dataset.html例子。其界面效果大致如下:
實(shí)際開發(fā)時(shí),大部分場景下我們都是通過Dorado的IDE定義DataType:
由IDE的屬性標(biāo)簽定義DataType的具體屬性設(shè)置,如下是一個(gè)PropertyDef的屬性設(shè)置:
AggregationDataType用于描述集合類數(shù)據(jù)。
dorado中可以通過model.xml定義全局的DataType,各個(gè)頁面中就可以直接使用,例如在model.xml中我們定義:
之后在我們的視圖文件中,相關(guān)控件如果有dataType屬性,我們就可以直接使用它:
當(dāng)然IDE設(shè)計(jì)器也提供了設(shè)置支持,在你打開dataType屬性對話框的時(shí)候,可以看到選擇列表中有一個(gè)Models屬性列表,里面就包含了你定義的全局的DataType屬性:
全局的DataType方便我們重用設(shè)置,但是如果在不同的頁面有不同個(gè)性化設(shè)置要求,例如同樣是category對象的id,有的頁面我們希望顯示名稱為"ID",有的頁面我們希望顯示名稱為"類型編號",諸如此類的個(gè)性化需求,我們都可以直接在Dorado的View中的DataType中設(shè)置解決。
首先我們要在View的Model節(jié)點(diǎn)添加一個(gè)私有的dataType并且設(shè)置它的parent屬性為對應(yīng)的全局的DataType:
設(shè)置parent屬性時(shí),IDE會提供向?qū)гO(shè)置窗口:
找到全局Models中的對應(yīng)的DataType并添加上就可以。
接下來我們只要在這個(gè)私有的DataType添加一些個(gè)性化的設(shè)置就可以,例如本例只要添加一個(gè)id屬性,并設(shè)置它的label為"類型編號",其它都不用設(shè)置,它會直接從全局的DataType中繼承下來。
在很多場景下,如果你只想定義一個(gè)給當(dāng)前頁面使用的DataType,而不需要把它設(shè)置為公用的DataType,那么你就可以不用在全局的DataType的model.xml文件中定義,在View的當(dāng)前Models節(jié)點(diǎn)下定義DataType就可以了,并通過creatingType屬性和對應(yīng)的POJO建立映射關(guān)系
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: