我在SoftwareViewModel Constuctor中订阅了一些事件,我正考虑在单独的模块中移动这个特定的视图和视图模型,并使其成为按需
但是,为了使事件发布和辅助工作,需要在应用程序加载时加载该SoftwareViewModel,即为了使SoftwareViewMOdel的填充工作。
那么,事件发布和参与是如何在按需视图模型的概念中工作的。
它是否可以做我所想的,因为SoftwareViewModel的行为取决于我们在应用程序中登录时加载的设置。
**//Want to make this viewmodel ON DEMAND**
public SoftwareViewModel()
{
**//Event that is going to subscribed**
SubscriptionToken subscriptionValidate = this.eventAggregator.GetEvent<PubSubEvent<IValidate>>().Subscribe(i =>
{
//CODE HERE
});
}
关于按需应变的一些解释: OnDemand I指的是今天我有两个选项卡1和2。我希望我的选项卡-2的东西应该加载当我点击标签2,即SoftwareViewModel OnDemand。
但是我的Tab -1有一些设置可以在SoftwareViewModel上生效,即选项卡- 2。为此,我使用事件订阅和发布来共享表1&2中的数据。
但我想做所有的点击选项卡-2。
问:根据我的研究,是否可以按需制作SoftwareViewModel,即按需提供活动公开和注册服务,因为根据我的研究,只有在注册订阅时才能出版。
如果需要更多的描述,请告诉我。
发布于 2018-07-25 05:27:24
您的理解是正确的;典型的pub/sub应用程序中的订阅只有在订阅建立后才会接收发布的事件。
这就是为什么pub/sub基本上是,而不是--视图(模型)接收数据的唯一方式。
为了使它更清楚,让我们从第二个用例开始。首先输入tab-2
。tab-1
从未被创建过。那么你是如何得到数据的呢?tab-2
不仅没有在正确的时间订阅,它所寻找的事件也从未发布过!
此外,在第三种情况下,假设tab-1
实际上是一个不同的过程。tab-2
可能对在其进程启动之前发生的事件感兴趣!
对于所有用例,解决方案是相同的;视图(模型)(这里是tab-2
)必须能够查询系统的当前状态。“去取,然后订阅剩下的。”查询和响应可以通过您的pub/子系统(构建了这个子系统,这是一项相当大的工作),也可以通过其他方法进行。
TL;DR:您不能只依赖简单的pub/sub来获取您的初始数据。
https://stackoverflow.com/questions/51511033
复制相似问题