2016-09-21 46 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