继承自UI5中的Master XML View

时间:2016-09-21 08:41:19

标签: sapui5

想象一下,我有两个页面具有完全相同的布局,除了总是来自不同模型的数据。

使用Javascript视图,我可以使用UI5提供的OO机制编写类似的东西:

        +---------------------------------------------------+
        |                  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         |
+------------------------------+    +----------------------------+

SportCarView SUVview 实际上已在应用程序中使用并显示, CarsView 从不直接使用。所以实际上它是一个抽象类。

这一切都很好并且可以理解,但我如何使用XML视图执行相同(或类似的操作)?

我所知道的唯一合成方法是XML片段,它允许我在其他XML视图中重用XML视图的片段。但这不是我所追求的。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

当您应用XMLViews时,我想我会让控制器来处理模型选择。这也是我认为这种逻辑应该发生的地方(MVC)。

E.g:

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

除此之外,您确实可以应用不同的片段(如您所述)或使用可见和类属性以及绑定表达式来使视图看起来略有不同,例如:

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

或:

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

特别提醒一句。使用visible属性时。如果你让应用程序构建100个字段并隐藏其中的80个字段,你可能会理解它对性能非常不利。