首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将不同的viewmodel与其他viewmodel一起传递以显示页面

在软件开发中,ViewModel是一种设计模式,用于将数据和业务逻辑与用户界面(View)分离。它充当了View和Model之间的中间层,负责处理用户交互和数据展示。

将不同的ViewModel与其他ViewModel一起传递以显示页面,可以通过以下几种方式实现:

  1. 事件总线:使用事件总线机制,不同的ViewModel可以通过发布和订阅事件的方式进行通信。当一个ViewModel需要将数据传递给其他ViewModel时,它可以发布一个事件,其他ViewModel订阅该事件并接收数据。常见的事件总线库有EventBus和RxJava。
  2. 共享数据:在某些情况下,不同的ViewModel可能需要共享同一份数据。可以使用全局变量或单例模式来存储这些共享数据,不同的ViewModel可以直接访问和修改这些数据。但需要注意线程安全性和数据一致性的问题。
  3. 导航框架:使用导航框架可以实现不同ViewModel之间的页面跳转和参数传递。通过定义路由规则和参数传递方式,可以方便地在不同的ViewModel之间进行页面切换和数据传递。常见的导航框架有Jetpack Navigation和React Navigation。
  4. 依赖注入:通过依赖注入框架,可以将不同的ViewModel注入到需要它们的地方。这样,不同的ViewModel之间可以直接引用和调用对方的方法和属性,实现数据传递和页面展示。常见的依赖注入框架有Dagger和Koin。

总结起来,将不同的ViewModel与其他ViewModel一起传递以显示页面可以通过事件总线、共享数据、导航框架和依赖注入等方式实现。具体选择哪种方式取决于项目的需求和架构。在腾讯云的产品中,可以使用腾讯云的云开发服务(https://cloud.tencent.com/product/tcb)来搭建后端支持,使用腾讯云的云原生服务(https://cloud.tencent.com/product/tke)来部署和管理应用程序,使用腾讯云的云数据库(https://cloud.tencent.com/product/cdb)来存储数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

ViewModel 被设计用来生命周期相关方式保存和管理 UI 相关数据。ViewModel 允许数据在例如屏幕旋转这样配置更改后依然保留。...他们可以按 home 键或者通过应用其他地方导航(出去)。抑或在查看搜索结果时候电话打了进来或收到通知。然而用户最终希望是当他们返回到那个 activity 时候页面状态离开前完全一样。...为了实现这两种情形下行为,用可以本地持久化、ViewModel 和 onSaveInstanceState() 一起使用。...例如,有些 activity 在被用户关闭后不会一个全新状态打开。一般地,当我在 Android 手机上关闭然后重新打开 Chrome 时,返回到了关闭 Chrome 之前正在浏览页面。...ViewModel其他架构组件 LiveData 和 Room 一起使用可以替代 Loader。ViewModel 保证配置更改后数据不丢失。LiveData 保证 UI 数据同步更新。

3.8K30

ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

我在上篇博文中用新 ViewModel 类开发了一个简单用例来保存配置更改过程中篮球分数。ViewModel 被设计用来生命周期相关方式保存和管理 UI 相关数据。...ViewModel 被设计用来生命周期相关方式保存和管理 UI 相关数据。ViewModel 允许数据在例如屏幕旋转这样配置更改后依然保留。...他们可以按 home 键或者通过应用其他地方导航(出去)。抑或在查看搜索结果时候电话打了进来或收到通知。然而用户最终希望是当他们返回到那个 activity 时候页面状态离开前完全一样。...为了实现这两种情形下行为,用可以本地持久化、ViewModel 和 onSaveInstanceState() 一起使用。...ViewModel其他架构组件 LiveData 和 Room 一起使用可以替代 Loader。ViewModel 保证配置更改后数据不丢失。LiveData 保证 UI 数据同步更新。

99320
  • MVVM 成为历史,Google 全面倒向 MVI

    不过,从数据层获取应用数据格式通常不同于UI需要展示数据格式,因此我们需要将数据层数据转化为页面的状态 因此界面层一般分为两部分,即UI层State Holder,State Holder...在此类情况下,这些不同状态捆绑在一起代价可能会超过其优势,尤其是当其中某个状态更新频率高于其他状态更新频率时。...举个例子,如果用户需要给新闻列表加个书签,那么就需要将事件传递ViewModel,然后ViewModel更新UI State(中间可能有数据层更新),UI层订阅UI State订响应刷新,从而完成页面刷新...这种分离可让UI只发挥其名称所表明作用:通过观察UI State变化来显示页面信息,并将用户输入传递ViewModel实现状态刷新。 换句话说,单向数据流动有助于实现以下几点: 数据一致性。...便可获取页面的所有状态,相对 MVVM 减少了不少模板代码 添加状态只需要添加一个属性,降低了ViewModelView层通信成本,业务逻辑集中在ViewModel中,View层只需要订阅状态然后刷新即可

    1.8K10

    C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

    在这里,您ViewModel传递给定位器,确定应用程序shell应该如何呈现。在Silverlight中,这将导致设置或您RootVisual。在WPF中,这将创建主窗口。...此属性获取您ViewModel,使用ViewLocator定位视图,然后将它们一起传递到ViewModelBinder。绑定完成后,视图被注入到定义属性元素中。...此属性获取ViewModel并将其定义该属性元素一起传递到ViewModelBinder。换言之,这是视图优先,因为您已经在Xaml中内联实例化了视图,然后只是针对ViewModel调用绑定。...然后,使用ViewModelBinderViewModel连接到页面。...这意味着,当尝试应用约定时,找不到上下文菜单、工具提示或任何其他不在可视化树中或这些特殊位置之一内容。 定制 您可能不会遇到上述元素位置限制相关问题。

    2.8K20

    知识点 | ViewModel 四种集成方式

    我们在 2019 年做一份开发者问卷显示,超过 40% Android 开发者已经在自己应用中使用了 ViewModel。...ViewModel 可以数据层 UI 分离,而这种架构不仅可以简化 UI 生命周期控制,也能让代码获得更好可测试性。...viewModelScope 当 ViewModel 被销毁时,通常都会有一些与其相关操作也应当被停止。 例如,假设您正在准备一个位图 (bitmap) 显示到屏幕上。...Kotlin 协程架构组件一起使用 developer.android.google.cn/topic/libra… 视频演讲: 理解 Android 中 Kotlin 协程 v.youku.com...和导航图来精确限定数据在 Fragment 中共享范围; 使用 DataBinding 库时,可以 ViewModel 传递给数据绑定 (binding),如果同时有在 ViewModel 中使用

    2.5K20

    ViewModels 简单入门

    ViewModel 类旨在有生命周期方式保存和管理UI相关数据。 这使得数据可以在屏幕旋转等配置变化情况下不丢失。 这篇文章是详细探索ViewModel系列文章中第一篇。...这个ViewModel保存该屏相关所有数据,提供 getter 和 setter。...这样,UI控制器就可以在UI交互发生时显示和更新数据,例如按下按钮增加 Court-Counter 中分数。...**class**); 这可以让你有一个应用程序,打开同一个 Activity or Fragment 不同实例,但具有显示不同 ViewModel 信息。...你只需要传递正确UI 控制器实例就好。 最后思考: ViewModel非常好把你UI控制器代码UI数据分离出来。 这就是说,它并不是能完成数据持久化和保存App 状态工作。

    1.2K70

    浅谈ViewModel

    大致流程: 跳转时需要将数据按k-v封装入Bundle,或者数据Parcelable传递给下个页面; 下个页面修改数据并返回后,需要从onFragmentResult()Intent解析并同步数据...; Intent传递数据大小总量不能超过1M; 麻烦且数据大小有限制。...ViewModel同时规避了传统方法缺点: bind同一个ActivityFragments均可以通过ViewModelProvider获取共同数据对象,无需主动进行数据传递; 脱离Intent、...生命周期Lifecycle同步,当Activity /Fragment超出Lifecycle范围(并不是onDestroy()回调),ViewModel连同其包含数据一起被销毁了。...5 源码分析 带着两个小问题简单进行下源码分析: 1) ViewModelActivity / Fragment映射关系是如何建立起来

    2.7K90

    知识点 | ViewModel 四种集成方式

    我们在 2019 年做一份开发者问卷显示,超过 40% Android 开发者已经在自己应用中使用了 ViewModel。...ViewModel 可以数据层 UI 分离,而这种架构不仅可以简化 UI 生命周期控制,也能让代码获得更好可测试性。如果想了解更多,可以参考 ViewModel: 简单介绍视频和官方文档。...viewModelScope 当 ViewModel 被销毁时,通常都会有一些与其相关操作也应当被停止。 例如,假设您正在准备一个位图 (bitmap) 显示到屏幕上。...Kotlin 协程架构组件一起使用 developer.android.google.cn/topic/libra… 视频演讲: 理解 Android 中 Kotlin 协程 v.youku.com...和导航图来精确限定数据在 Fragment 中共享范围; 使用 DataBinding 库时,可以 ViewModel 传递给数据绑定 (binding),如果同时有在 ViewModel 中使用

    35620

    MVC、MVP、MVVM 架构特点区别

    (Model-View-Controller)和(Model-View-ViewModel)在概念上都是基于分层表现数据分开设计架构,M 和 V 基本上不是问题,但这两个整合中间这层可就有很多学问...Model: 模型(用于封装应用程序业务逻辑相关数据以及对数据处理方法) View: 视图(渲染页面) Controller: 控制器(M和V之间连接器,用于控制应用程序流程,及页面的业务逻辑...视图对模型数据低效率访问,依据模型操作接口不同,视图可能需要多次调用才能获得足够显示数据。对未变化数据不必要频繁访问,也损害操作性能。...Model 做沟通,而 View 可以透过一些机制 (例如: Events,Databindings…) 来和 ViewModel 沟通取得数据或数据抛给 Model 做存取等工作,ViewModel...案例总结    以上解释是不是看蒙圈了,OK,我又发现一篇(作者:这是你玩具车吗)博文里面写讲解,发现挺容易懂,我们一起来看一下。    这三个架构区别在“MV联系”部分。

    57210

    C# WPF MVVM开发框架Caliburn.Micro Screens, Conductors 和 Composition⑦

    外壳可能会显示许多不同屏幕,有些甚至同时显示。shell可能也会显示很多小部件,但它们不是任何屏幕一部分。...屏幕可能实现激活/停用界面的方式相同,它也可能实现一些界面,允许售票员询问“您可以关闭吗?”这引出了一个重要问题:在某些情况下,停用屏幕关闭屏幕相同,而在其他情况下,停用屏幕关闭屏幕不同。...假设当前ActiveItem可以关闭,那么导体推动它通过生命周期停用阶段,true传递给Deactivate方法指示视图模型也应该关闭。...注意,前面的示例不同,我实际上是已执行项类型限制为IScreen。在这个示例中并没有真正技术原因,但这更接近于我在实际应用程序中实际操作。...ViewModel Composition Caliburn.Micro屏幕和导体最重要特征之一是,它们是复合模式实现,使它们易于不同配置组合在一起

    2.6K20

    MVC、MVP、MVVM 架构特点区别

    (Model-View-Controller)和(Model-View-ViewModel)在概念上都是基于分层表现数据分开设计架构,M 和 V 基本上不是问题,但这两个整合中间这层可就有很多学问...Model: 模型(用于封装应用程序业务逻辑相关数据以及对数据处理方法) View: 视图(渲染页面) Controller: 控制器(M和V之间连接器,用于控制应用程序流程,及页面的业务逻辑...视图对模型数据低效率访问,依据模型操作接口不同,视图可能需要多次调用才能获得足够显示数据。对未变化数据不必要频繁访问,也损害操作性能。...Model 做沟通,而 View 可以透过一些机制 (例如: Events,Databindings…) 来和 ViewModel 沟通取得数据或数据抛给 Model 做存取等工作,ViewModel...案例总结    以上解释是不是看蒙圈了,OK,我又发现一篇(作者:这是你玩具车吗)博文里面写讲解,发现挺容易懂,我们一起来看一下。    这三个架构区别在“MV联系”部分。

    50010

    MVPMVCMVVM

    , 我需要只是新建相应MVC模块, 加到对应Scene即可. 4.可维护性: 各个模块间职责分离, 哪里出错改哪里, 完全不影响其他模块....; 3.MVPMVC还有一点不同是,它通信是双向,如下图所示,有两个方向:V—>P—>M,M—>P—>V。...MVVM 1.MVVM是由MVP进化而来,MVVM模式基本上MVP相同,只是把MVP中P变成了VM,即ViewModel, 2.MVVM中数据可以实现双向绑定,即View层数据变化则ViewModel...包含UIView以及UIViewController,View层是可以持有ViewModelViewModel层:视图适配器。暴露属性View元素显示内容或者元素状态一一对应。...一般情况下ViewModel暴露属性建议是readOnly,至于为什么,我们在实战中会去解释。还有一点,ViewModel层是可以持有Model。 Model层:数据模型持久化抽象模型。

    48920

    mvc 和 mvvm 区别和应用场景?

    图片 MVC思想:Controller负责Model数据用View显示出来,换句话说就是在Controller里面把Model数据赋值给View。...MVC特点:实现关注点分离,即应用程序中数据模型业务和展示逻辑解耦。就是模型和视图之间实现代码分离,松散耦合,使之成为一个更容易开发、维护和测试客户端应用程序。...,妨碍了他们独立重用 降低了视图对模型数据访问,依据模型操作接口不同,视图可能需要多次调用才能获得足够显示数据。...MVVM MVVM是Model-View-ViewModel简写,即模型-视图-视图模型。 Modal:模型,指的是后端传递数据。 View:视图,指的是所看到页面。...ViewModal:视图模型,mvvm模式核心,它是连接view和model桥梁。主要用来处理业务逻辑 图片 它有两个方向: 一是模型转化成视图,即将后端传递数据转化成所看到页面

    59520

    MVVM模式

    描述 MVVM模式简化了界面业务依赖,有助于图形用户界面的开发业务逻辑或数据模型开发分离开来。...在MVVM中ViewModel作为绑定器视图层UI数据层Model链接起来,在Model更新时,ViewModel通过绑定器数据更新到View,在View触发指令时,会通过ViewModel传递消息到...View Model 组成 Model 面向对象来对对事物进行抽象结果,是代表真实状态内容领域模型。...在Model更新时,ViewModel通过绑定器数据更新到View,在View触发指令时,会通过ViewModel传递消息到Model。...优点 低耦合: 视图View可以独立于Model变化和修改,一个ViewModel可以绑定到不同View上,当View变化时候Model可以不变,当Model变化时候View也可以不变。

    1.2K10

    七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递

    附加姓和名显示全名——逻辑层 2. 使用货币显示工资——逻辑层 3. 使用不同颜色表示工资值,使用简单逻辑改变了HTML元素外观。...——逻辑层 ViewModel 解决方法 ViewModel是ASP.NET MVC应用中隐式声明层。它是用于维护ModelView之间数据传递,是View数据容器。...View ViewModel 之间是如何关联? View变成ViewModel强类型View。 Model和 ViewModel 是如何关联?...新建EmployeeViewModel 为了达到实验目的,首先列出我们实验需求: 1. 名和姓应该合并显示。 2. 使用货币显示数量 3. 薪资不同颜色来显示 4....新建并传递ViewModel 在GetView方法中,获取Model数据并且强制转换为ViewModel对象。

    2.3K90

    浅谈开发中MVVM模式及MVP和MVC区别

    它立足于原有MVP框架并且把WPF新特性糅合进去,应对客户日益复杂需求变化。...MVVM和MVP关系 而 MVVM 模式 Presenter 改名为 ViewModel,基本上 MVP 模式完全一致。...MVVM架构: Model:代表你基本业务逻辑 View:显示内容 ViewModel前面两者联系在一起对象 一个ViewModel接口提供了两个东西:动作和数据。...视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同"View"上,当View变化时候Model可以不变,当Model变化时候View也可以不变。 2....你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。 3. 独立开发。开发人员可以专注于业务逻辑和数据开发(ViewModel),设计人员可以专注于页面设计。 4.

    1.9K100

    由浅入深,详解ViewModel那些事

    要完全理解其设计体系,往往也要伴随这其他组件基础,所以并不是特别容易能被开发者吃透。 故本篇将以最新视角开始,一起,用力一瞥 ViewModel 设计原理。...相应,我们数据在没有额外处理情况下,往往也会被初始化,然后在界面重启时重新加载。 但如果当前页面需要维护某些状态不被丢失呢,比如 选择、上传状态 等等? 此时问题就变得棘手起来。...所以,在现在开发中,我们开始 View数据 逻辑 藏于 ViewModel 中,然后对外部暴漏观察者,比如我们常常会搭配 LiveData 一起使用,以此更容易保持状态同步。...两者不同点在于,后者只能创建 空构造函数 ViewModel ,而前者没有这个限制。...至于更加详细使用方式,这也非本篇要深入探索细节,具体可参照其他同学教程即可。至此,关于 ViewModel 设计思想 以及 状态保存原理 ,相信读过本篇你也将不会有所疑问。

    80840

    三大架构比较

    如想去动态改变一个页面的背景,或者动态隐藏/显示一个按钮,这些都没办法在xml中做,只能把代码写在activity中,造成了activity既是controller层。...逻辑处理层(Presenter) 作为ViewModel交互中间纽带,处理用户交互负责逻辑。 1....View可以独立于Model变化和修改,一个ViewModel可以绑定到不同”View”上,当View变化时候Model可以不变,当Model变化时候View也可以不变。 2、可重用性。...开发人员可以专注于业务逻辑和数据开发(ViewModel),设计人员可以专注于页面设计,生成xml代码。...双向绑定概念让传统布局文件由被动转为主动,数据驱动UI,而且ViewViewModel实现了完美的解耦,这也解决了MVP模式下缺点。

    1.1K100
    领券