Model view controller ExtJS4 MVC-将数据传递到详细信息表单-最佳实践

Model view controller ExtJS4 MVC-将数据传递到详细信息表单-最佳实践,model-view-controller,extjs4,Model View Controller,Extjs4,我开始按照他们新的MVC模式在ExtJS4中开发一个原型。我有一个主表单(客户),其中有一个客户列表(网格)和一个详细信息表单,双击网格中的一行打开详细信息表单。目前,我已在主窗体的控制器中执行以下操作: var view = Ext.widget('CustomerDetailsView'); view.show(); 但是我还需要将customerID传递到details表单,以便details表单为客户加载附加数据。在这种情况下,可通过以下方式完成: view.down('form').

我开始按照他们新的MVC模式在ExtJS4中开发一个原型。我有一个主表单(客户),其中有一个客户列表(网格)和一个详细信息表单,双击网格中的一行打开详细信息表单。目前,我已在主窗体的控制器中执行以下操作:

var view = Ext.widget('CustomerDetailsView');
view.show();
但是我还需要将customerID传递到details表单,以便details表单为客户加载附加数据。在这种情况下,可通过以下方式完成:

view.down('form').loadRecord(selectedRecord);
因此,我的理解是,细节视图加载了主视图中的整个记录。首先,我的详细信息视图有自己的控制器和存储,其次,这似乎不是视图之间通信的正确方式

  • 主控制器不应该调用细节控制器吗
  • 有人建议在所有这些交流中使用事件 在视图/控制器之间,但我不确定创建 所有这些应用程序范围的事件仅用于简单的主/详细信息 沟通
在ExtJS4 MVC应用程序模式中,向子视图/控制器传递数据的建议方法是什么?

这里没有一种“正确”的方法。真正由您来构造最有意义的应用程序。对于单个视图,不必使用单个控制器。事实上,我想说的是,作为一般规则,一个控制器应该从多个视图响应事件。当然,如果你有一个超级复杂的视图,而你的控制器类已经失控了,那么一定要打破它

现在回答您提出的问题:

  • 是的,您可以让一个控制器与另一个控制器对话:从主控制器-
    this.getController('DetailsController').doSomething()

  • 你在这里的驾驶座上。最终,你决定遵循一种或另一种模式。如果你觉得这样做不对,就不要这样做


  • 我已经在这里解释了一种使用路由的方法。