DataType

2024-03-07 18:38 更新

上面我們介紹了DataType可以用于描述實體數據,就像是數據字典。事實上,DataType不僅僅可以用來描述實體數據,DataType用于為Dorado描述所有數據。幾種DataType的繼承關系圖如下(用于描述實體數據的其實只是最為常用的EntityDataType):

簡單的DataType

最上面的DataType用于那些簡單的數據類型,例如String、int、boolean等。Dorado中默認已經對下列的數據類型創(chuàng)建了相應的DataType。 上述這些DataType都已被預先的注冊到了系統(tǒng)當中,只需要直接利用名稱引用就可以了。例如下面的代碼指定了某文本編輯框對應的數據類型是float。這樣,用戶將無法在該編輯框中輸入非浮點數的內容。

new Dorado.widget.TextEditor({ dataType: "float" });

EntityDataType

EntityDataType是專門用于描述那些實體數據的類型。實體數據類型特指那些包含一到多個子屬性的數據類型,在JavaScript中實體數據都是以JSON對象的形式存在的。為了描述實體數據類型中的每一個屬性,Dorado提供了專用的屬性描述對象——Dorado.PropertyDef。每一個PropertyDef中都包含數據類型、校驗規(guī)則、顯示格式、是否只讀等一系列的屬性。

var dataTypePhone = new Dorado.EntityDataType({
    name: "Phone",
    PropertyDefs: [
        { name: "product", label: "型號", required: true },
        { name: "manufacturer", label: "生產商" },
        { name: "type", label: "機型",
            mapValues: [
                { key: "A", value: "直板" },
                { key: "B", value: "翻蓋" },
                { key: "C", value: "滑蓋" },
                { key: "D", value: "旋蓋" },
                { key: "Z", value: "其它" }
            ]
        },
        { name: "price", label: "價格", 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);

上面的代碼定義了一個包含了若干屬性信息的DataType。利用此DataType制作出的頁面可見Dorado 7 Client Edition提供的dataset.html例子。其界面效果大致如下: 實際開發(fā)時,大部分場景下我們都是通過Dorado的IDE定義DataType: 由IDE的屬性標簽定義DataType的具體屬性設置,如下是一個PropertyDef的屬性設置:

AggregationDataType

AggregationDataType用于描述集合類數據。

全局DataType

dorado中可以通過model.xml定義全局的DataType,各個頁面中就可以直接使用,例如在model.xml中我們定義: 之后在我們的視圖文件中,相關控件如果有dataType屬性,我們就可以直接使用它: 當然IDE設計器也提供了設置支持,在你打開dataType屬性對話框的時候,可以看到選擇列表中有一個Models屬性列表,里面就包含了你定義的全局的DataType屬性:

私有DataType

全局的DataType方便我們重用設置,但是如果在不同的頁面有不同個性化設置要求,例如同樣是category對象的id,有的頁面我們希望顯示名稱為"ID",有的頁面我們希望顯示名稱為"類型編號",諸如此類的個性化需求,我們都可以直接在Dorado的View中的DataType中設置解決。 首先我們要在View的Model節(jié)點添加一個私有的dataType并且設置它的parent屬性為對應的全局的DataType: 設置parent屬性時,IDE會提供向導設置窗口: 找到全局Models中的對應的DataType并添加上就可以。 接下來我們只要在這個私有的DataType添加一些個性化的設置就可以,例如本例只要添加一個id屬性,并設置它的label為"類型編號",其它都不用設置,它會直接從全局的DataType中繼承下來。 在很多場景下,如果你只想定義一個給當前頁面使用的DataType,而不需要把它設置為公用的DataType,那么你就可以不用在全局的DataType的model.xml文件中定義,在View的當前Models節(jié)點下定義DataType就可以了,并通過creatingType屬性和對應的POJO建立映射關系

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號