如何在extjs中的两个视图之间共享相同的viewModel?

如何在extjs中的两个视图之间共享相同的viewModel?,extjs,viewmodel,Extjs,Viewmodel,extjs中的两个或多个视图是否可能共享同一个viewModel 例如,如果我有两个视图,如下面的代码所示,那么这两个视图并不具有相同的视图模型,而是具有该视图模型的实例。也许这就是我们的意图,但如何实现全局字段,使其能够在多个视图中使用相同的viewModel声明进行访问 因此,我想绑定字段name,这样一个视图中的更改会自动导致所有相应视图中的更改 Ext.define('MainModel', { extend: 'Ext.app.Vi

extjs中的两个或多个视图是否可能共享同一个viewModel

例如,如果我有两个视图,如下面的代码所示,那么这两个视图并不具有相同的视图模型,而是具有该视图模型的实例。也许这就是我们的意图,但如何实现全局字段,使其能够在多个视图中使用相同的viewModel声明进行访问

因此,我想绑定字段
name
,这样一个视图中的更改会自动导致所有相应视图中的更改

           Ext.define('MainModel', {
                extend: 'Ext.app.ViewModel',
                alias: 'viewmodel.main',

                data: {
                    name : '',
                }
            });
            
            Ext.define('View1', {
                extend: 'Ext.Container',    
                xtype: 'view1',

                viewModel: {
                    type: 'main'
                },
                
                items: [{
                    xtype: 'textfield',
                    fieldLabel: 'Name:',
                    bind: {
                        value: '{name}',
                    }       
                }
                    ]
            });
            
            Ext.define('View2', {
                extend: 'Ext.Container',    
                xtype: 'view2',

                viewModel: {
                    type: 'main'
                },

                items: [{
                    xtype: 'textfield',
                    fieldLabel: 'Name:',
                    bind: {
                        value: '{name}',
                    }       
                }
                    ]
                
            });

我认为不可能按照你要求的方式来做。当您绑定到一个数据元素时,系统将首先检查当前组件视图模型,如果它没有找到值,它将上升到父级并查看,并将继续此操作,直到找到匹配项或不再有父级。因此,如果要在视图模型中共享数据,应将数据存储在父视图模型中

这是一个

这些字段具有双向绑定,因此当您键入一个字段时,它将更新视图模型,然后更新另一个字段。在小提琴上编辑每个字段,另一个字段将更改。可以在viewModel中设置属性,也可以在两个字段中设置一个

这显示通过按钮在父视图模型中设置字段值和数据