extjs 5如何将商店绑定到模态窗口和网格

时间:2014-09-19 09:11:51

标签: extjs mvvm

这种情况很常见,当您点击网格中的单元格,出现表单的模式窗口,进行更改,单击“保存”按钮,并更新网格中的存储时。在第4次,我通过loadRecord从网格到表单,然后使用set-method将更改应用于网格存储。现在我正在尝试使用MVVM方法,并且遇到了一些问题。因为当我将相同的VM设置为网格和窗体时,在窗体销毁(保存或取消按钮)后,VM也在破坏,并且应用程序破坏。因此,我们不能在多个组件中使用一个VM实例。我们必须将它放在一个容器中,其中有一个网格和一个表格。所有官方的例子都属于这种类型。 问题是,如果有人解决了这个问题吗? fiddle
answer from sencha forum

4 个答案:

答案 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]
       }
   }
});

https://fiddle.sencha.com/#fiddle/jp6

答案 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网格?