另一个控制器中的ExtJS init控制器

时间:2014-10-27 16:38:57

标签: javascript extjs

我有ExtJS(4.2)app,我有一个带有一些逻辑的模态窗口。我想通过几个控制器分割逻辑。例如,我有控制器A,我在其中添加了关闭窗口的控件等等,在这个窗口中我还有另一个逻辑,例如某个窗体,有自己的按钮用于保存和编辑。对于表单我想添加新的控制器,但我不知道它是好还是坏?,当我应该初始化控制器的形式?

感谢。

摘要申请

Modal Window (has close button, and some other controls) 
   - Items Box
       - Item (has own controls)

For Modal Window there is Controller
Item this is xtype which is added dynamically

我想要两个控制器,一个用于模态窗口(父级),一个用于项目(子级)。而且我不知道从父母那里初始化第二个控制器有多好。

2 个答案:

答案 0 :(得分:0)

为项目的每个视图(MVVM)添加控制器是一种很好的做法。我喜欢做的是添加一个带有全局方法的控制器,它应该适用于我拥有的每个视图,所以在这种情况下你可以使用mixins:

Ext.define('MyApp.view.MyPanel.MyPanelViewController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.mypanel',

    mixins: {
        GlobalController: 'MyApp.controller.GlobalController'
    },

    control: {
        ...
    }
    ...
});

这样您就可以使用ViewController中全局控制器中的所有方法。

答案 1 :(得分:0)

我认为最好的方法是在'view'的initComponent()函数中初始化控制器。假设您的模态窗口有A,B和C控制器,并且您的应用程序名为“App”,在模态窗口的initComponent()函数中,您可以一次加载控制器:

initComponent: function () {
......
App.getController("A"); App.getController("B"); App.getController("C");
......
}