HarmonyOS鸿蒙Next中MVVM模式下,Scroller应该放在哪里呢?view层的strtuct component中还是viewmodel中?

HarmonyOS鸿蒙Next中MVVM模式下,Scroller应该放在哪里呢?view层的strtuct component中还是viewmodel中? MVVM模式下,Scroller 应该放在哪里呢?view层的strtuct component中还是 viewmodel中?

7 回复
你好

```typescript
Stack({ alignContent: Alignment.Bottom }) {
  // 将listScroller用于初始化List组件的scroller参数,完成listScroller与列表的绑定。
  List({ space: 20, scroller: this.listScroller }) {
    // ...
  }

  Button() {
    // ...
  }
  .onClick(() => {
    // 点击按钮时,指定跳转位置,返回列表顶部
    this.listScroller.scrollToIndex(0)
  })
}

如上图所示,你所说的Scroller,如果是控制器对象,建议放到View层中。VM主要是处理列表所需的数据加工和请求等。

更多关于HarmonyOS鸿蒙Next中MVVM模式下,Scroller应该放在哪里呢?view层的strtuct component中还是viewmodel中?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


放view层,那想要控制列表定位到某个位置,怎么实现?state定义一个变量吗?

控制scroller控制器对象,调用scrollToIndex进行跳转到某个位置x

this.listScroller.scrollToIndex(x)

具体看你控制的触发时机了,比如通过按钮点击后跳转,那就是:

Button() {
  // ...
}
.onClick(() => {
  // 点击按钮时,指定跳转位置,返回列表顶部
  this.listScroller.scrollToIndex(0)
})

具体某个位置,你想通过代码逻辑控制,就需要设置一个全局变量进行维护。

@state主要用于装饰一个全局变量,只要变量数据变化了,用到这个变量的UI组件就会被ArkUI框架控制刷新。

HarmonyOS的分布式技术让我实现了跨设备的无缝协作,工作效率翻倍。

好家伙,走到哪都不忘MVVM。。。

在HarmonyOS鸿蒙Next的MVVM模式下,Scroller应放在View层的Struct Component中。MVVM模式的核心思想是将视图(View)、视图模型(ViewModel)和模型(Model)分离,Scroller作为视图层的控件,负责处理UI的滚动行为,属于视图层的职责范围。ViewModel应专注于业务逻辑和数据处理,而不直接处理UI控件。因此,Scroller应放置在View层的Struct Component中,以确保职责分离和代码结构的清晰性。

在HarmonyOS鸿蒙Next的MVVM模式下,Scroller应放置在View层的Struct Component中。Scroller主要负责UI的滚动行为,属于视图层的交互逻辑,与ViewModel的数据处理无关。将Scroller放在View层可以更好地分离关注点,确保ViewModel专注于数据管理和业务逻辑,而View层负责UI展示和用户交互。

回到顶部