Forms Extjs 5 MVC中的主/从面板

Forms Extjs 5 MVC中的主/从面板,forms,extjs,model-view-controller,master-slave,Forms,Extjs,Model View Controller,Master Slave,我正在使用由面向MVC的代码风格支持的Extjs5.1。 我有一个主视图,它继承了Ext.panel.panel的边框布局 在东部地区,有一个包含多个记录(或“模型”,我真的不知道这里应该使用什么术语)的存储网格。(主网格) 在中心区域上,有另一个从Ext.form.Panel继承的视图,该视图应显示网格的选定项。(奴隶形式) 我的目标是用选定的“主网格”记录刷新“从属窗体” 我发现在网格和表单之间进行“通信”的唯一方法是从主视图控制器执行fireEvent('selectRecord',…

我正在使用由面向MVC的代码风格支持的Extjs5.1。
我有一个主视图,它继承了Ext.panel.panel的边框布局

  • 在东部地区,有一个包含多个记录(或“模型”,我真的不知道这里应该使用什么术语)的存储网格。(主网格)
  • 在中心区域上,有另一个从Ext.form.Panel继承的视图,该视图应显示网格的选定项。(奴隶形式)
我的目标是用选定的“主网格”记录刷新“从属窗体”

我发现在网格和表单之间进行“通信”的唯一方法是从主视图控制器执行fireEvent('selectRecord',…),并在表单视图控制器内听取他的意见,但这似乎很奇怪,因为表单视图是主视图的子项

有没有更常见的方法


顺便问一下,直接调用另一个视图的函数是一种很好的做法,还是应该只让它们各自的控制器进行交互?

我通常做的事情,我认为是最常见的方法,就是使用selectionchange事件监听器,以如下方式更新表单:

listeners : {
    selectionchange: function(model, records) {
        var rec = records[0];
        if (rec) {
            formpanel.getForm().loadRecord(rec);
        }
    }
}
要使其工作,表单字段的
name
属性必须与网格存储模型中字段的名称匹配


这里有一个这样的例子:

看看这个例子,你最终如何引用组件完全取决于你自己。谢谢。我的问题主要是要知道直接访问另一个视图而不是使用其控制器是否是一种不好的做法。您应该使用网格控制器来侦听selectionchange事件,不需要使用表单面板的控制器。我用一个视图控制器创建了这个小提琴,所以你有一个想法