我目前正在从事一个项目,我希望用户可以在运行时在两个布局(列表和网格)之间进行选择。我在UI5文档(Sample Apps)和GitHub上搜索示例,但没有找到有关如何使用此示例或最佳实践示例的示例。因此,我考虑了如何实现这种行为并提出了多种想法,但是他们都不觉得这样做是最佳实践。
想法1-销毁“旧”控件并在Controller内部生成新控件 我的第一个想法是销毁我不再需要的控件。例如,如果用户想要切换到网格布局,则列表及其相关的每个控件都将被存储。在控制器中,将创建网格所需的控件,然后将其呈现在视图中。在我看来,这会混淆控制器内部的视图和控制器逻辑,并且感觉不像是最佳实践
想法2-创建两个视图并在两个视图之间切换 我的第二个想法是创建两个视图,每个视图用于我需要的布局并在它们之间切换。这将意味着在控制器和视图中都将进行大量代码复制。感觉这不是正确的方法。
因此,如果您对此有经验,或者真的有类似最佳实践的经验,我会感到很高兴。
谢谢您!
答案 0 :(得分:2)
我会说,想法2是因为以下原因:
最佳实践是按照 MVC方法进行工作,这意味着将逻辑,视图和数据分开。由于控件定义了视图,因此最好在用于它的文件(XML视图)中实例化控件。
性能:销毁所有控件意味着如果用户决定在视图之间切换,则每次必须由控制器重新实例化控件。即使您可能不会注意到它,也没有表现力。
您不需要代码复制:代码复制的参数不一定正确。如果您可以在列表和网格视图中执行相同的操作,则只需将控制器链接到两个视图就足够了,在这种情况下,您几乎不必复制任何代码。只要确保将逻辑拆分为足够的功能即可。这样,您可能需要编写一些额外的公共函数来处理事件,但仅此而已。