2016-09-21 47 views
0

想象一下,除了始終來自不同模型的數據之外,我有兩個頁面佈局完全相同。繼承UI5中的主XML視圖

通過一段JavaScript視圖我可以使用UI5提供的00機制的代碼是這樣的:

 +---------------------------------------------------+ 
     |     CarsView       | 
     +---------------------------------------------------+ 
     | - defines the page structure      | 
     | - contains no concrete model or uses dummy model | 
     +-----^-----------------------------------^---------+ 
       |         | 
       |         | 
       |         | 
       |         | 
+-------------+----------------+ +-------------+--------------+ 
|  SportsCarView   | |   SUVview   | 
+------------------------------+ +----------------------------+ 
| - inherits from "CarsView" | | - inherits from "CarsView" | 
| - uses "sportscar" model | | - uses "suv" model   | 
+------------------------------+ +----------------------------+ 

SportCarViewSUVview實際使用,並顯示在應用程序中,CarsView從未直接使用。所以實際上它是一個抽象類。

這一切都很好,但我怎麼能用XML視圖做同樣的事情?

我知道的唯一組合方法是XML片段,它可以讓我在其他XML視圖中重複使用片段來查看XML視圖。但這不是我所追求的。

任何想法?

回答

2

當您應用XMLViews時,我想我會讓控制器負責模型選擇。這也是我認爲這種邏輯應該發生的地方(MVC)。

如:

this.setModel(
    this.getComponent().getModel(
     car === "SUV" ? "SUVModel" : "SportsCarModel" 
    )); 

最重要的是,你確實可以應用不同的片段(因爲你已經提到的)或可見光和階級屬性和綁定表達式使觀點略有差異,例如玩:

<Text text="{SuvProperty}" visible={viewModel>/IsSuv} /> 

或:

<Text text="{= ${viewModel>/IsSuv} ? ${SuvProperty} : ${SportcarProperty} }" /> 

一個警告ES的字頁。當玩可見的屬性。如果您獲得的應用程序構建了100個字段並隱藏了80個字段,那麼您可能會明白,這對性能來說是非常不利的。

+0

感謝您分享您的想法。在爲不同模型提供通用視圖時,我目前有類似的方法。我也使用這個控制器,儘管你的代碼更好;)對於「可見」標誌:我實際上認爲這很不方便,只有在沒有其他選擇的情況下才會回落。但是再次感謝您的意見! – samba2