考虑以下视图结构:
布局视图
地图检视
列表显示
物品检视
列表显示
物品检视
物品检视
物品检视
列表显示
物品检视
物品检视
目前,整个结构只有一个控制器。所有嵌套视图都通过冒泡事件与该控制器通信。
我要为每个级别创建一个控制器吗?我的作品行得通,但是我觉得布局视图和列表视图做得太多-例如当控制器说“这是更新的项目列表(来自服务器)”时,布局视图负责删除不属于新数据的地图标记,更新现有标记并添加新标记。同时,LayoutView的第一个ListView负责执行完全相同的操作,但它是项。
为每个控制器创建一个控制器会更好吗?如果是这样,我将如何处理?布局视图是否应该注入ListController和MapController,它们将负责构造子视图?
如果您对技术感兴趣:这是一个JavaScript小部件。
最佳答案
您只列出了一个视图集合。如果要实现基于MVC的小部件库,则需要具有相应的模型和控制器。也就是说,对于您拥有的每个视图,您都需要一个模型实例和一个控制器实例(您需要对相应的类进行编码)。
例如,您将具有ListModel,ListView和ListController类。您可能决定编写另一个名为List的类,以将所有内容绑定在一起-以便应用程序的UI构建代码只需实例化List类并使用它。您可以根据需要减少班级数量。例如,您可能决定将视图和控制器合并为一个(因为视图和控制器之间的耦合很紧密)。
同样,您将拥有ItemModel,ItemView和ItemController类(以及Item类)。
模型类将具有以相应的视图类可用于呈现特定视图的方式将数据呈现给相应的视图类的功能。控制器将知道如何解释在相应视图上发生的UI交互,以及如何在相应视图和相应模型上调用方法。
要允许创建树层次结构,理想情况下,您将使用GoF合成模式。
除了MVC模式之外,您可能希望查看责任分配策略不同的PAC模式。 MVC如今已被广泛使用。
关于javascript - 带有嵌套 View 的MVC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23628260/