Extjs 5 MVC 中的 master/slave 面板

A master/slave panel in Extjs 5 MVC

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

我的目标是用 "master grid" 的选定记录刷新 "slave form"。

我发现在网格和表单之间 "communicate" 的唯一方法是从主视图控制器执行一个 fireEvent('selectRecord', ...) 并在表单视图控制器,但它看起来很奇怪,因为表单视图是主视图的子项。

有更通用的方法吗?

由此推论,直接调用另一个视图的视图调用函数是一种很好的做法,还是我应该只让它们各自的控制器交互?

我通常做的,我认为这是最常见的方法,有一个 selectionchange 事件侦听器,它会像这样更新您的表单:

listeners : {
    selectionchange: function(model, records) {
        var rec = records[0];
        if (rec) {
            formpanel.getForm().loadRecord(rec);
        }
    }
}

为此,表单字段的 name 属性 必须与网格存储模型中的字段名称相匹配。

这里有一个例子:http://dev.sencha.com/extjs/5.1.0/examples/kitchensink/#form-grid