【发布时间】:2016-09-20 10:00:48
【问题描述】:
我最近一直在思考这个问题,我希望比我更了解 MvvmCross 的人能对此有所了解。鉴于每个移动平台之间的细微差别,可能有几个不同的因素会影响这个问题。但是对于这种情况,我们假设我们想要跨平台解决方案的最佳方法。
假设我们有一个基本的 View 和一个 ViewModel 类设置。这是一个 iOS 示例。
查看
public partial class FirstView : MvxViewController<FirstViewModel>
{
public FirstView(IntPtr handle) : base(handle)
{
}
public override void ViewDidLoad()
{
Request = new MvxViewModelInstanceRequest(FirstViewModel.NewInstance());
base.ViewDidLoad();
}
}
查看模型
public class FirstViewModel : MvxViewModel
{
public static FirstViewModel NewInstance()
{
return Mvx.IocConstruct<FirstViewModel>();
}
public FirstViewModel()
{
}
}
现在在加载此视图时或在创建视图之前的某个时间点,我们希望使用我们使用依赖注入注入的服务从 Web 获取一些数据;因为视图的显示取决于该数据。这就是问题所在。从平台的角度来看,在 MvvmCross 生命周期中,此时最适合在服务中调用 web fetch 函数。
关于平台,我假设我们应该在视图加载后执行此操作。因为如果获取的数据不是简单数据类型,那么在 Android 上使用会很不方便,因为由于活动之间的序列化,必须将数据保存到磁盘并在导航后检索它。
所以假设我们在视图加载过程中调用了 web fetch。 MvvmCross 架构中最好的地方在哪里触发它,最接近设计范式。例如视图模型。是否有人可以推荐在内部调用它的任何生命周期方法。类似于 Start 方法,在创建视图模型后调用。
【问题讨论】: