HarmonyOS Component中如何监听嵌套类中基础类型的变化

LoginPage中有一个登录按钮,点击登录按钮时,会把LoginViewModel 中的loginStatus变量置为true,LoginPage中如何监听到loginStatus的变化?现在只能监听到整个LoginViewModel 的变化

LoginPage代码

import { LoginViewModel } from '../viewmodel/LoginViewModel';
import { hilog } from '@kit.PerformanceAnalysisKit';

@Entry
@Component
struct LoginPage {
  @State @Watch("onLoginVMChange") loginVM: LoginViewModel = new LoginViewModel()
  @State @Watch("onLoginStatusChange") loginStatus: boolean = this.loginVM.loginStatus

  build() {
    Button('登录')
      .width('200vp')
      .margin({ top: '20vp' })
      .onClick(() => {
        this.loginVM.login()
      })
  }

  onLoginStatusChange(changedPropertyName: string) {
    hilog.info(0x001, "TAG_LOGIN", "onLoginStatusChange")
  }

  onLoginVMChange(changedPropertyName: string) {
    hilog.info(0x001, "TAG_LOGIN", "onLoginVMChange")
  }
}

LoginViewModel代码

@Observed
export class LoginViewModel {
  userName: string = ''
  password: string = ''
  loginStatus: boolean = false

  login() {
    this.loginStatus = true
  }
}
HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

需要在onLoginVMChange方法中对loginStatus变量重新赋值,示例如下:

onLoginVMChange(changedPropertyName: string) {
  this.loginStatus = this.loginVM.loginStatus
  hilog.info(0x001, "TAG_LOGIN", "onLoginVMChange")
}

文档参考:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/arkts-new-monitor.md#%E7%8E%B0%E6%9C%89%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86%E6%A1%86%E6%9E%B6%E7%9A%84%E5%B1%80%E9%99%90%E6%80%A7

分享
微博
QQ
微信
回复
1天前
相关问题
RouterParam能传基础类型吗?
314浏览 • 1回复 待解决
ArkTS如何监听状态变量变化
1034浏览 • 1回复 待解决
UIAbility是否可以监听页面变化
1514浏览 • 1回复 待解决
如何监听window大小变化
552浏览 • 1回复 待解决
如何监听窗口大小变化
2354浏览 • 1回复 待解决