0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

harmony OS NEXT-双向数据绑定MVVM以及$$语法糖介绍

程奕红 来源:jf_34770892 作者:jf_34770892 2025-04-29 16:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

# 鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍

## 1.1 双向数据绑定概念

在鸿蒙(HarmonyOS)应用开发中,双向数据改变(或双向数据绑定)是一种让数据·模型和UI组件之间保持同步的机制,当数据发生变化时,UI自动更新;反之,当用于通过UI代码操作修改数据时,数据模型也会同步更新,这种机制简化了开发,减少了手动DOM或UI组件的代码量,举个简单的例子,比如输入框和变量的绑定,用户输入变量更新,变量在其他地方修改时输入框的内容也发生变化

## 1.2双向数据绑定步骤

1. @State装饰器修饰数据
2. 通过@onchange事件去收集改变的值,并将新值赋值给原来变量,达到数据改变

![image-20250204215640443](https://i-blog.csdnimg.cn/img_convert/d21ea6a6e4aacffd3ba7182adcaf41ee.png)

## 1.3案例演示

* 代码演示

```ts
@Entry
@Component
struct Test1 {
@State userName: string = '小程神'

build() {
Column({ space: 20 }) {
Text('通过onChange收集inputValue')
TextInput()
.border({
color: Color.Black,
width: 1
})
.onChange((value) => {
this.userName = value

})
Text('展示inputvalue')
TextInput({ text: this.userName })
.border({
width: 1,
color: Color.Black
})
}.height('100%')
.width('100%')
.padding(20)
}
}
```

* 效果展示

![img](https://i-blog.csdnimg.cn/img_convert/b88e33b8fbca425604ba8a375da3500e.gif)

* 总结
1. 数据发生变化 绑定text的值 –>视图产生更新
2. 视图产生事件 onChange事件 –>数据发生变化

## 1.4MVVM:$$语法糖

> 通过上述的onChange事件改变数据,其实还有更为简便的一种方式可以实现双向数据绑定

官方文档上提供了以下组件实现双向数据绑定的快捷方法

![image-20250204220418730](https://i-blog.csdnimg.cn/img_convert/6e65a77626dcd769feb2bbbbd572ac7e.png)

### 1.4.1案例演示

1. textInput演示

* 代码展示

```ts
@Entry
@Component
struct Test2 {
@State message: string = 'Hello World';

build() {
Column({ space: 10 }) {
Text(this.message)
TextInput({ text: $$this.message })
Button('改变数据')
.onClick(() => {
this.message = '我的小猫暴脾气'
})


}.width('100%')
.height('100%')
.padding(20)
}
}
```

* 效果展示

![img](https://i-blog.csdnimg.cn/img_convert/9af5d8ce2908e282801923739c5ef358.gif)

2. checkBox展示

* 代码展示

```ts
Text(this.ischecked+'')
Checkbox()
.select($$this.ischecked)
```

* 效果展示

![img](https://i-blog.csdnimg.cn/img_convert/2472572ce8a6403fd6b4c450d5d33d53.gif)

3. Toggle展示

* 代码展示

```
Text(this.isOn + '')
Toggle({
type: ToggleType.Switch,
isOn: $$this.isOn
})
```

* 案例演示

![img](https://i-blog.csdnimg.cn/img_convert/4023eb199737b45a6456cc7bf1332e17.gif)

4. 时间选择器展示

* 代码展示

```ts
Text(this.date.toDateString())
DatePicker({
selected:$$this.date
})
```

* 效果演示

![img](https://i-blog.csdnimg.cn/img_convert/09a3e7d999def616794b3f9bfe78270b.gif)

5.Select展示

* 代码展示

```ts
Text('mySelect' + this.select)
Select([
{ value: 'vip' },
{ value: '绿钻' },
{ value: '黄钻' }
])
.value($$this.select)

```

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据绑定
    +关注

    关注

    0

    文章

    3

    浏览量

    6181
  • 鸿蒙
    +关注

    关注

    60

    文章

    2858

    浏览量

    45354
  • Harmony
    +关注

    关注

    0

    文章

    108

    浏览量

    3491
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    几种实现vue的数据双向绑定的方法介绍

    vue的数据双向绑定的实现
    发表于 07-29 08:33

    微信小程序数据双向绑定

    微信小程序数据双向绑定,了解小程序中.js文件中钩子函数:在加载小程序的时候首先调用onLoad()函数,紧接着调用onShow函数来进行页面展示,最后调用OnReady
    发表于 07-09 06:15

    什么是双向数据绑定

    什么是双向数据绑定?什么是Object.definePropety?
    发表于 10-25 07:21

    AWTK-MVVM是什么?其功能有哪些

    AWTK-MVVM是一套为AWTK用C语言开发,并支持各种脚本语言的MVVM框架,实现了数据绑定、命令绑定和窗口导航等基本功能,使用AWTK
    发表于 12-15 06:07

    浅谈javascript技术的双向数据绑定

    近几年前端技术栈真是发展的太迅速了,从以前的针对dom操作的框架如jquery,ext.js等框架逐步过渡到当前的mvvm模式,让前端开发者将注意力从dom操作逐渐解脱出来,专注于逻辑的实现,个人认为开发效率至少提升了1倍,mvvm模式的一个核心便是
    发表于 10-29 11:49 4873次阅读

    MVC、MVP与MVVM的异同介绍

    View和ViewModel内部通过一个Binder进行事件交互,该Binder通过双向绑定将View与ViewModel中与对于数据操作的部分链接,当对应数据由更新时同样会自动地反馈
    的头像 发表于 06-22 15:34 5024次阅读

    华为认为Harmony OS成熟需要5到10年

    上个月,华为宣布了自主研发的操作系统Harmony OS(Hongmeng OS)。几天前,华为在英国伦敦举行了一次媒体活动,并讨论了其在该系统上的计划。Harmony
    的头像 发表于 12-23 11:35 2137次阅读

    harmony os 2.0报名入口 如何报名harmonyos2.0报名?

    华为HarmonyOS2.0公测怎么申请?如何报名harmony os 2.0报名?harmony os 2.0报名入口在哪里?本文就此问题进行解释。 在第一轮的公测里面,华为共有19
    的头像 发表于 06-08 12:10 6030次阅读

    美的是首批支持 Harmony OS 的家电企业之一

    据美的官微消息,搭载 HarmonyOS 的美的产品今天双十一上市,据悉,美的是首批支持 Harmony OS 的家电企业之一。
    的头像 发表于 11-11 15:05 4045次阅读

    OpenHarmony生态论坛:关于开源Harmony OS教育行业发行版介绍

    OpenHarmony生态论坛:关于开源Harmony OS教育行业发行版,深度赋能智能硬件行业
    的头像 发表于 04-25 15:19 1423次阅读
    OpenHarmony生态论坛:关于开源<b class='flag-5'>Harmony</b> <b class='flag-5'>OS</b>教育行业发行版<b class='flag-5'>介绍</b>

    Harmony OS网络编程实验指南

    Harmony OS 网络编程 实验指南,十分有用的入门实验指南。
    发表于 10-24 11:42 0次下载

    Kotlin的语法解析

    最近又开始要写一些客户端代码,现在项目都是使用Kotlin,但是之前没有系统的学习过Kotlin,对于Kotlin的一些语法还不熟悉,所以写篇文章总结下。
    的头像 发表于 04-19 10:21 1766次阅读

    harmony OS NEXT-基本介绍及DevcoStudiop基本使用

    #鸿蒙基本介绍及DevcoStudiop基本使用 1.认识DevcoStudiop工作区 1.1认识工作区 开发节奏: 通过左侧目录找到对应的应用文件,在编辑区进行代码编写,在右侧看预览效果 快捷键
    的头像 发表于 03-26 16:48 610次阅读
    <b class='flag-5'>harmony</b> <b class='flag-5'>OS</b> <b class='flag-5'>NEXT-</b>基本<b class='flag-5'>介绍</b>及DevcoStudiop基本使用

    harmony OS NEXT-通过用户首选项实现数据持久化

    # 鸿蒙通过用户首选项实现数据持久化 ## 1.1 场景介绍 用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。当用户希望有一个全
    的头像 发表于 04-29 16:38 948次阅读

    harmony OS NEXT-评论功能小demo

    # 评论页面小demo ## 效果展示 ![img](https://i-blog.csdnimg.cn/img_convert/f574e0b18325ee466938a3cb70530209.gif) ## 1.拆解组件,分层搭建 我们将整个评论页面拆解为三个组件,分别是头部导航,评论项,回复三个部分,然后统一在index界面导入 ![image-20250304150652225](https://i-blog.csdnimg.cn/img_convert/2e234f0fe986014368d8d7f138577e6a.png) ## 2.头部导航界面搭建 ![image-20250304151026576](https://i-blog.csdnimg.cn/img_convert/c876aa04a505a3c3203c03984a2e1504.png) ```ts @Preview @Component struct HmNavBar {  // 属性:是可以被传
    的头像 发表于 04-27 17:38 421次阅读