在Exrin中,使用ViewModel
的正常层次结构可以访问IModel
,Model
可以访问IService
和Operation
s有权访问IModel
从ViewModel
调用,在每个范围内正确使用方法和交互是什么?
例如,我需要在导航到页面时清除SQLite数据库中的表。我有一个IRepositoryService
,其中包含我与数据库交互的所有方法。我的Model
有一个ClearUserInputTables
方法,可以在IRepositoryService
中调用几种不同的方法。
我可以在OnAppearing
内覆盖ViewModel
方法(可能会将其更改为生命周期中的不同点)以调用Model.ClearUserInputTables
方法,或者我可以创建{ {1}}可以访问Operation
来执行相同的操作。哪个在Exrin中受到青睐?
也许我需要更好地理解Model
的目的。我读了Operation Separation(主要用于导航),但不确定它是否应该用于其他内容(从Operation
调用Model
方法)。
答案 0 :(得分:1)
操作设计用于在ViewModel之外获取代码,因此它可以
操作是完全可选的。你不必使用它们。
如果您想在导航到页面时清除表格,我可以推荐
OnNavigated
仅在首次加载页面时调用此方法。
OnBackNavigated
当背面导航到时,通过弹出前面的页面调用。但
OnAppearing
每次看到页面时都会调用,无论你是怎么到达那里的。但是,如果这是您想要的,那么它可用于清除数据库表。
因为Operation本质上是ViewModel的一部分,所以您可以将它们视为与操作相同的级别。因此
Operation -> Model -> Service -> Repository (ClearDB)
您只需通过Operation构造函数传递模型。
作为旁注,我意识到操作可能会产生大量开销。它们是可选的。如果您真的不需要在本答案开头列出的好处,那么您可以直接从OnAppearing调用模型,而无需使用操作。