我使用的是由面向MVC的代码风格驱动的Extjs5.1 我有一个主视图,它继承自Ext.panel.Panel并带有边框布局。
我的目标是刷新"奴隶形式"使用"主网格的选定记录"。
我发现"沟通的唯一方式"网格和表单之间是从主视图控制器执行fireEvent(' selectRecord',...)并在表单视图控制器内监听他,但它看起来很奇怪,因为表单视图是主视图的子项。
有更常见的方法吗?
通过改进,直接调用另一个视图的函数是一个很好的做法,还是应该让它们各自的控制器进行交互?
答案 0 :(得分:1)
我通常做的并且我认为最常见的方法就是拥有一个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