MVVM,放置/处理ui事件的位置,例如&on;' onClick'

时间:2018-05-08 05:27:57

标签: mvvm architecture mvp

我知道这是一个模糊的问题,但我对MVP设计非常关注,多年来,我决定让自己保持最新状态并决定冒险进入 MVVM 架构设计,我&#39 ;我已经阅读了很多有关 MVVM 所遵循的Stream / Observer模式的博客,示例和内容,但我不清楚(无法找到非常简单的代码)MVVM如何处理ui-events ?比如onclick?在MVP中,视图和演示者有一个双向契约来处理这样的事情

// called by view
presenter.onViewButtonClicked 



void onViewButtonClicked() {

      // do something here that business logic requires
      view.doSomethingAfterPresenterReceivedClickEvent() 
}   

我知道MVVM中的View 订阅&到ViewModel,当数据发生时(模型)查看做出反应它呢

现在,我怎么能告诉ViewModel我点击了什么? (PS:我知道我必须订阅ViewModel以便在点击某些内容时听取任何更改),我只需要一些指导和示例,我如何告诉VM我有意做了些什么。

我阅读了微软的MVVM文档,它讲述了一些关于iCommand的内容,这是一个类似于告诉MVVM发生UI事件的合同。

请有人开导我...提前致谢

编辑:我忘了提及,我没有使用DataBinding,并且由于公平的利弊,我决定不这样做。

1 个答案:

答案 0 :(得分:0)

我真的不是 MVVM 专家,但据我所知:

MVP MVVM 的主要区别在于 MVP 视图之间存在双向连接演示者,这意味着演示者知道视图(界面),而视图知道关于演示者(界面)

另一方面,在 MVVM 中,此连接只有一种方式,这意味着视图知道 viewmodel ,但是 viewmodel 不知道该视图(因为从 viewmodel 视图的连接是通过观察数据处理的)。 这允许 viewmodel 独立于任何视图视图实现,并允许单个 viewmodel 使用多个视图

所以(最后)回答你的初步问题:“onClick”事件的处理方式在 MVP MVVM ...... 视图中基本相同通知演示者 / viewmodel 有关该事件的信息,然后:

  • 演示者在模型中设置数据并在视图上调用相应的方法(在 MVP 中)
  • viewmodel 设置更改的数据,自动触发对视图的反应,因为观察到该数据(在 MVVM 中)

希望这会有所帮助:)