我正在研究ExtJ,并试图找到组织未来项目的最佳方法。
我从ExtJs MVC教程http://docs.sencha.com/ext-js/4-0/#!/guide/application_architecture开始

在此架构中,我不喜欢某些东西:
控制器“了解”视图小部件并以这种方式添加事件侦听器

this.control({
            'viewport > userlist':{
                itemdblclick:this.editUser
            },
            'useredit button[action=save]':{
                click:this.updateUser
            }
        });


我们正在启动一个包含500多个表格的大型项目。
我相信在如此大的项目中,这种方法会造成很大的混乱。
有什么办法可以解耦控制器和视图?

例如,在GWT中,他们使用MVP模式,而Presenter并不了解视图内部
并通过“显示”界面与视图进行交互。
我知道,Javascript没有接口,但是可能有某种方法可以在Extjs中模拟它们。

我希望我的控制器是这样的:

editButton = viewInterface.getEditButton();
editButton.on('click', function(btn, e, eOpts) {
    eventBus.fireEvent(editUserEvent);
});


可能吗?

最佳答案

绝对有可能。在视图中创建方法getEditButton并返回所需的任何内容。那不是问题。

但是我的2c用于解耦视图和控制器。我目前还在从事一个相当大的项目。可能没有您的大,但我们将拥有约100多个视图/控制器。

我尝试使用两个主要经验法则来设计该项目:


如果我有一些通用逻辑,无论是在视图中还是在控制器中,都可以创建基类并将其移到那里。因此,稍后-我将其扩展,以便子视图/控制器获得相同的功能。
我在视图类中留下了与应用程序的业务逻辑无关的代码-例如,如果我有一个网格,并且需要添加特殊代码以选择网格中的所有记录,或者在一个网格中显示记录数和所选记录数。状态栏内的网格-此代码转到视图类。因此,控制器对这些“简单”任务一无所知,只专注于应用程序的业务逻辑。

10-06 00:47