这种情况很常见,当您点击网格中的单元格,出现表单的模式窗口,进行更改,单击“保存”按钮,并更新网格中的存储时。在第4次,我通过loadRecord从网格到表单,然后使用set-method将更改应用于网格存储。现在我正在尝试使用MVVM方法,并且遇到了一些问题。因为当我将相同的VM设置为网格和窗体时,在窗体销毁(保存或取消按钮)后,VM也在破坏,并且应用程序破坏。因此,我们不能在多个组件中使用一个VM实例。我们必须将它放在一个容器中,其中有一个网格和一个表格。所有官方的例子都属于这种类型。
问题是,如果有人解决了这个问题吗?
fiddle
answer from sencha forum
答案 0 :(得分:4)
ExtJs 5 ViewModel具有嵌套的组件结构,所有子对象都可以使用父的ViewModel。所以你可以尝试将窗口对象添加到ViewController视图:
var form = Ext.create('Plus.view.FormbetV');
var window = Ext.create('Ext.Window', {
frame: true,
width: 350,
height: 200,
modal: true,
layout: 'fit'
});
window.add(form);
this.getView().add(window); // <--- add parent 'scope'
window.show();
不要忘记删除此代码:
//var viewModel = Ext.getCmp('gridbet').getViewModel();
//this.setViewModel(viewModel);
它适用于我,但在这种情况下,窗口大小将受到网格大小的限制。
答案 1 :(得分:2)
除了 user1638582 的回答之外,我自己的解决方案是将所选记录添加到表单的ViewModel中:
var form = Ext.create('Plus.view.FormbetV',{
viewModel:{
data:{
currentRec:this.getView().getSelectionModel().getSelection()[0]
}
}
});
答案 2 :(得分:2)
查看示例,&#34;数据绑定 - &gt;孤立的儿童会议&#34;似乎是我们正在寻找的东西:
http://dev.sencha.com/ext/5.1.0/examples/kitchensink/#binding-child-session
答案 3 :(得分:1)
您是否阅读了this blog post,其中使用了MVVM example网格?