在单页面类似桌面的应用程序中,我应该为窗口动态实例化控制器吗?怎么样?

时间:2011-12-23 04:27:44

标签: model-view-controller extjs extjs4

我问这个是因为我真的不知道哪里我应该处理动态创建窗口的事件。

当有人点击桌面图标时,将动态创建窗口(如果它不存在)。我应该在创建窗口时创建一个控制器并挂钩它吗?如果是,怎么样?

在这里,您可以阅读我想过的不同方法:

  1. 创建一个将实例化Window(作为其视图)的控制器,我将处理所有内容
  2. 仅创建窗口并挂钩任务栏控制器中的所有内容(创建窗口的位置)。在这种情况下,任务栏控制器将变得非常大。
  3. 预先创建所有窗口控制器并最终创建窗口并隐藏它们(当页面准备好时)。然后只显示/隐藏它们,所以我将在Application
  4. 中使用getController对所有控制器进行“静态”引用

    我应该使用哪种方法?

    编辑1: 我正在尝试动态实现(并通过另一个控制器引用它)一个控制器。我特别难以参考它。有关应如何做的任何建议吗?

2 个答案:

答案 0 :(得分:0)

我发现Ext的MVC无法使用桌面演示,因为可以将多个相同类型的窗口(视图)绑定到单个控制器。每个窗口都有自己的状态,很难区分控制器中的视图。

答案 1 :(得分:0)

我自己解决了这个问题:我将控制器与所有控制器一样,通过将它们插入应用程序控制器数组来预先控制控制器。在此之后,我在调用方法时在该控制器上实现视图,然后我只使用refs来访问该视图。

该方法非常干净,使用refs感觉非常好。很可能控制器有一个方法hasWindow,它检查控制器视图是否已经创建。