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

闪光戈登

extjs中的两个以上视图可能共享同一viewModel吗?

例如,如果我有下面的代码所示的两个视图,则两个视图没有相同的视图模型,而是该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}',
                    }       
                }
                    ]
                
            });
mcg1103

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

这是一个小提琴

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

小提琴显示了通过按钮设置字段值和父viewModel中的数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在打字稿中的两个对象之间键入共享相同键的两个对象?

如何在SwiftUI中的两个视图模型之间共享发布的模型?

如何在两个或多个视图中共享单个Viewmodel?

具有相同模型和两个视图的两个 ViewModel 之间的通信

如何在两个视图之间共享解析(UI路由器)

如何在两个角度项目之间共享代码?

如何在两个JVM实例之间共享内存?

如何在两个Linux模块之间共享代码?

如何在两个不同的组件之间共享数据?

如何在两个 keras 层之间共享权重?

如何在两个测试类之间共享ExternalResource?

如何在两个组件之间共享数据?

如何在两个函数之间共享公共变量

如何在两个线程之间共享数据

如何在Android中的MVP架构中的两个演示者之间共享数据?

如何在 ReactJS useStyles 中让两个类名共享相同的样式

如何在cro中的两个路由器模块之间共享变量?

我如何在 ionic v-1 中的两个页面之间共享值

如何在Eclipse中的两个Android项目之间共享类?

如何在AngularJS中的两个模块之间共享数据?

如何在Jmeter中的两个线程组之间共享JSessionID

如何在颤抖的两个视图之间滚动

如何在JavaScript中的两个相同字符之间获取子字符串?

如何在MySQL中相同列不同行中找到两个值之间的差异

如何在RelativeLayout中的两个视图之间填充布局?

如何在RelativeLayout中填充两个视图之间的空间

如何以Xamarin形式在新鲜的mvvm中将相同的viewmodel设置为两个视图

如何在两个线程之间共享或避免共享Websocket资源?

如何在没有服务的情况下在两个组件之间共享共享变量