【问题标题】:data processing in MVVM patternMVVM模式的数据处理
【发布时间】:2020-10-24 08:23:48
【问题描述】:

谁的角色正在处理 MVVM 模式中的数据?

例如,如果您需要在一个屏幕上以 mm/dd/yyyy 格式显示 Date 对象,而在另一个屏幕上显示 mm-dd-yyyy 格式,那么 View 或 ViewModel 的角色是谁?

如果这是我使用@BindingAdapter的View的角色, 如果是ViewModel的角色,使用Livedata<Date>().map {/* format */ }

MVVM 模式的更好方法是什么?

谢谢。

【问题讨论】:

    标签: android mvvm


    【解决方案1】:

    MVVM 的视图模型是一个值转换器,这意味着视图模型负责从模型中暴露(转换)数据对象,从而使对象易于管理和呈现。在这方面,视图模型比视图更像模型,并且处理大部分(如果不是全部)视图的显示逻辑

    因此,从概念和实现角度来看,逻辑或转换应该在 View Model 中。

    【讨论】:

      【解决方案2】:

      在 ViewModel 中更好。如果您将来从 DataBinding 切换,您的映射逻辑将保留在 ViewModel 中。

      【讨论】:

        【解决方案3】:

        我会将原始的“长”时间戳保留在视图模型中,然后根据需求决定将数据转换为字符串的位置。将字符串保留在视图模型中的一个好处是它只进行一次转换,并保留数据直到生命周期结束。每次绑定视图时,绑定适配器都会进行转换。同时字符串会一直保存在内存中,直到生命周期结束。

        【讨论】:

          猜你喜欢
          • 2020-04-24
          • 1970-01-01
          • 2018-12-27
          • 2013-07-08
          • 2011-11-25
          • 2013-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多