Sapui5 从UI5中的主XML视图继承

Sapui5 从UI5中的主XML视图继承,sapui5,Sapui5,假设我有两个页面,除了数据总是来自不同的模型之外,它们的布局完全相同 通过Javascript视图,我可以使用UI5提供的OO机制编写如下代码: +---------------------------------------------------+ | CarsView | +--------------------------------------------

假设我有两个页面,除了数据总是来自不同的模型之外,它们的布局完全相同

通过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视图的片段。但这不是我想要的


有什么想法吗?

当您应用XMLView时,我想我会让控制器负责模型选择。在我看来,这也是这种逻辑应该发生的地方(MVC)

例如:

除此之外,您确实可以应用不同的片段(正如您已经提到的),或者使用visible和class属性以及绑定表达式来使视图看起来略有不同,例如:

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



特别是在玩visible属性时,要注意一点。如果让应用程序构造100个字段并隐藏其中80个字段,您可能会明白这对性能非常有害。

当您应用XMLView时,我想我会让控制器负责模型选择。在我看来,这也是这种逻辑应该发生的地方(MVC)

例如:

除此之外,您确实可以应用不同的片段(正如您已经提到的),或者使用visible和class属性以及绑定表达式来使视图看起来略有不同,例如:

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



特别是在玩visible属性时,要注意一点。如果您让应用程序构造100个字段并隐藏其中80个字段,您可能会明白这对性能非常有害。

感谢您分享您的想法。我目前有一个类似的方法,用不同的模型提供通用视图。我也使用了控制器,但是您的代码更好;)对于“可见”标志:我实际上认为这是相当笨拙的,只有在没有其他选择的情况下才会回归。但再次感谢您的投入!谢谢你分享你的想法。我目前有一个类似的方法,用不同的模型提供通用视图。我也使用了控制器,但是您的代码更好;)对于“可见”标志:我实际上认为这是相当笨拙的,只有在没有其他选择的情况下才会回归。但再次感谢您的投入!
<Text text="{= ${viewModel>/IsSuv} ? ${SuvProperty} : ${SportcarProperty} }" />