Smarttemplate的控制元件能否當成普通控制元件來用

JerryWangSAP發表於2018-03-24

我的同事問過我這個問題:

只要弄清楚Smart control的原理,就能回答這個問題。

答案是: smart control可以像普通的控制元件一樣在xml view中被定義和使用,但是必須結合OData annotation,否則沒有意義。以Smart control裡的Smart field為例,詳細原理在我的部落格Currency example – how Smart field works裡介紹。

概括起來,就是:

1. Smart field本身也是一個控制元件,更準確的說是一個沒有UI輸出的控制元件,只是一個殼。在UI render的時候,smart field會演變成input field,還是drop down list,還是date picker,還是F4 help,這些都需要有一個角色來告訴smart field,這個角色就是Odata annotation。Metadata裡定義的annotation會決定smart field最後的輸出方式。

2. Smart control可以脫離Smart template框架單獨使用。也就是說您可以建立一個很簡單的xml view,然後在這個view裡像使用普通控制元件那樣使用smart control,沒有任何問題。

請參考這個例子(完整實現程式碼在文末):

在XML view裡,我定義了一個Smart field,綁到Price這個property上。

在runtime時,它會自動被渲染成帶單位的currency field。後面那個EUR的currency field就像變戲法一樣生成了,其實就是sap:unit=”CurrencyCode”這個annotation起的作用。至於框架是如何解析annotation並自動生成currency field,相關的程式碼和分析都在上述提到的部落格Currency example – how Smart field works裡。

該Fiori應用的目錄結構:

原始碼地址

要獲取更多Jerry的原創技術文章,請關注公眾號”汪子熙”或者掃描下面二維碼:


相關文章