在Exrin中,使用ViewModel的正常层次结构可以访问IModel,Model可以访问IService,而Operation通常可以从ViewModel调用IModel,在每个范围内如何正确使用方法和交互?
例如,在导航到页面时,我需要清除SQLite数据库中的一个表。我有一个IRepositoryService,它包含了与数据库交互的所有方法。我的Model有一个ClearUserInputTables方法,它在IRepositoryService中调用几个不同的方法。
我可以重写OnAppearing方法(可能会将其更改到生命周期中的另一个点),以调用Model.ClearUserInputTables方法,或者创建一个可以访问Model的Operation来执行同样的任务。埃克斯林最喜欢哪一种?
也许我需要更好地理解Operation的用途,我阅读了操作分离 (基本上用于导航),但不确定它是否应该用于其他事情,比如(从ViewModel调用Model方法)。
发布于 2017-06-14 02:17:56
操作的目的是接受ViewModel之外的代码,因此它可以
然而,操作是完全可选的。你不用用它们。
如果要在导航到页时清除表,我可以建议
OnNavigated这只在页面第一次加载时调用一次。
OnBackNavigated当导航到后页时,通过其前面的页面被弹出时调用。但
OnAppearing每次看到页面时都会调用,而不管您是如何到达的。但是,如果这是您想要的,那么它可以用于清除您的数据库表。
因为一个操作本质上是ViewModel的一部分,所以您可以将它们看作是一个操作。因此
Operation -> Model -> Service -> Repository (ClearDB)您只需通过操作构造函数传递模型。
顺便提一句,我意识到运营可能会有很大的开销。它们是可选的。如果您并不真正需要这个答案开头列出的好处,那么您可以直接从OnAppearing调用模型,而无需使用操作。
https://stackoverflow.com/questions/44528881
复制相似问题