MVVM,其中put/handleui等事件'onClick'
MVVM, where to put/handle ui events such as 'onClick'
我知道这是一个模糊的问题,但多年来我一直专注于 MVP 设计,我决定让自己跟上时代并决定尝试 MVVM 架构设计,我一直在阅读很多关于 MVVM 遵循的 Stream/Observer 模式的博客、样本和资料,但我不清楚什么(找不到非常非常简单的代码) MVVM 如何处理 ui-事件?比如点击?在 MVP 中,view 和 presenter 有一个双向契约来处理这样的事情
// called by view
presenter.onViewButtonClicked
void onViewButtonClicked() {
// do something here that business logic requires
view.doSomethingAfterPresenterReceivedClickEvent()
}
我知道 MVVM 中的视图 订阅 到 ViewModel,当数据(模型)View 发生某些事情时 对此做出反应
现在,我如何告诉 ViewModel 我点击了什么? ( PS : 我知道我必须订阅 ViewModel 才能在我点击某些东西时收听任何变化 ), 我只需要一些 guidelines 和例子我怎么能告诉 VM 我是故意做的。
我阅读了 Microsoft 的 MVVM 文档,它说了一些关于 iCommand 的内容,这是一种类似合同的东西,可以告诉 MVVM 发生了 UI 事件。
有谁能赐教吗...在此先感谢
编辑:我忘了说,我没有使用 DataBinding,并且由于公平的利弊,我决定不使用。
我确实不是 MVVM 专家,但据我所知:
MVP和MVVM的主要区别在于MVP中有一个view 和 presenter 之间的双向连接,这意味着 presenter 知道 view(界面) 和 view 知道 presenter(界面)。
另一方面,在 MVVM 中,这种连接只有一种方式,这意味着 view 知道 viewmodel,但是 viewmodel 不知道视图(因为从 viewmodel 到 view 是通过观测数据处理的)。
这允许 viewmodel 独立于任何 view 或 view implementation 并允许单个 viewmodel 被多个 views.
使用
所以(最后)回答您最初的问题:'onClick' 事件的处理方式在 MVP 和 MVVM[= 中基本相同55=] .. view 将事件通知 presenter / viewmodel 然后:
- presenter 在模型中设置数据并在 view 上调用相应的方法(在 MVP 中)
- viewmodel 设置更改的数据,自动触发对 view 的反应,因为观察到该数据(在 MVVM)
希望对您有所帮助:)
我知道这是一个模糊的问题,但多年来我一直专注于 MVP 设计,我决定让自己跟上时代并决定尝试 MVVM 架构设计,我一直在阅读很多关于 MVVM 遵循的 Stream/Observer 模式的博客、样本和资料,但我不清楚什么(找不到非常非常简单的代码) MVVM 如何处理 ui-事件?比如点击?在 MVP 中,view 和 presenter 有一个双向契约来处理这样的事情
// called by view
presenter.onViewButtonClicked
void onViewButtonClicked() {
// do something here that business logic requires
view.doSomethingAfterPresenterReceivedClickEvent()
}
我知道 MVVM 中的视图 订阅 到 ViewModel,当数据(模型)View 发生某些事情时 对此做出反应
现在,我如何告诉 ViewModel 我点击了什么? ( PS : 我知道我必须订阅 ViewModel 才能在我点击某些东西时收听任何变化 ), 我只需要一些 guidelines 和例子我怎么能告诉 VM 我是故意做的。
我阅读了 Microsoft 的 MVVM 文档,它说了一些关于 iCommand 的内容,这是一种类似合同的东西,可以告诉 MVVM 发生了 UI 事件。
有谁能赐教吗...在此先感谢
编辑:我忘了说,我没有使用 DataBinding,并且由于公平的利弊,我决定不使用。
我确实不是 MVVM 专家,但据我所知:
MVP和MVVM的主要区别在于MVP中有一个view 和 presenter 之间的双向连接,这意味着 presenter 知道 view(界面) 和 view 知道 presenter(界面)。
另一方面,在 MVVM 中,这种连接只有一种方式,这意味着 view 知道 viewmodel,但是 viewmodel 不知道视图(因为从 viewmodel 到 view 是通过观测数据处理的)。 这允许 viewmodel 独立于任何 view 或 view implementation 并允许单个 viewmodel 被多个 views.
使用所以(最后)回答您最初的问题:'onClick' 事件的处理方式在 MVP 和 MVVM[= 中基本相同55=] .. view 将事件通知 presenter / viewmodel 然后:
- presenter 在模型中设置数据并在 view 上调用相应的方法(在 MVP 中)
- viewmodel 设置更改的数据,自动触发对 view 的反应,因为观察到该数据(在 MVVM)
希望对您有所帮助:)