元数据绑定系列(一):元数据绑定的使用

开发 前端
元数据绑定框架是基于HarmonyOS SDK开发的一套提供UI和数据源绑定能力的框架。通过使用元数据绑定框架,HarmonyOS应用开发者无需开发繁琐重复的代码即可实现绑定UI和数据源。

[[420686]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

阅读本文之前,建议您先阅读 Codelabs:元数据绑定框架,读实之后,跑一下代码。并且带着下面几个问题阅读。之后,我们一起探讨这些问题:

  1. 元数据绑定的使用步骤,注意事项。
  2. 什么是元数据绑定?和数据绑定有什么区别?
  3. 元数据绑定能干什么?

相关推荐:元数据绑定系列(二):元数据绑定进阶

元数据绑定的使用步骤,注意事项。

使用步骤我就不复制粘贴了,说一下注意事项:

1.不要忘记注解开关

  1. ohos {  
  2.     compileOptions {  
  3.         annotationEnabled true  
  4.     }  

 2.不要忘记初始化

  1. @MetaDataApplication(requireData = true, exportData = false)  
  2. public class MyApplication extends AbilityPackage {  
  3.     @Override  
  4.     public void onInitialize() {  
  5.         super.onInitialize();  
  6.         MetaDataFramework.init(this);  
  7.     } 

3.Feature中使用 元数据绑定,Json Schema文件必须放在Entry的resource/rawfile.jsonschema路径下。

4.xml中引用元数据有两种方式,别搞混

  •  <request-meta-data>
  1. <request-meta-data 
  2.     name="ClockMetaData" 
  3.     schema="com.example.meta-data.alarm"/> 

  •  <using-meta-data>

detail、list_item之类的页面里。待绑定的数据由上一个页面传进来

  1. <using-meta-data 
  2.     name="ClockMetaData" 
  3.     schema="com.example.meta-data.alarm"/> 

5.Json Schema中的id与 xml布局文件中引用元数据 的schema字段相对应。

  1. {  
  2.   "id""com.example.meta-data.alarm", //和xml中的schema对应,必须一样! 
  3.   "title""alarm schema",  
  4.   "$schema""http://json-schema.org/draft-04/schema#",  
  5.   "description""alarm description",    
  6.   "type""object",    
  7.   "properties": {  
  8.   }  

6.在xml中不访问metaData中的自定义方法时,可以不指定class;否则必须指定。

  1. <request-meta-data 
  2.     name="ClockMetaData" 
  3.     class="com.huawei.metadatabindingdemo.alarm.metadata.ClockRowMetaData"/>  

7.java代码中配置元数据(和xml中是等价的)

配置RequestSource

  1. <request-meta-data 
  2.     name="ClockMetaData" 
  3.     uri="dataability:///com.huawei.metadatabindingdemo.db.AlarmsDataAbility"/> 
  1. //java代码中的等价配置: 
  2. MetaDataRequestInfo request = new MetaDataRequestInfo.Builder() 
  3.         .setRequestSource("ClockMetaData"
  4.                 "dataability:///com.huawei.metadatabindingdemo.db.AlarmsDataAbility"

配置MetaDataClass

  1. <request-meta-data 
  2.     name="ClockMetaData" 
  3.     class="com.huawei.metadatabindingdemo.alarm.metadata.ClockRowMetaData"/> 
  1. //java代码中的等价配置: 
  2. MetaDataRequestInfo request = new MetaDataRequestInfo.Builder() 
  3.     .setMetaDataClass("ClockMetaData", ClockRowMetaData.class) 

8.待绑定元素必须要有id

9.待绑定字段命名空间要使用metaDataBinding

10.requestBinding()或reBinding()之后才可以调用binding.getLayoutComponent();

什么是元数据绑定?和数据绑定有什么区别?

百度百科中讲:“元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息”

元数据即“描述数据的数据”。那么,我理解的“元数据绑定”应该是通过“元数据”的形式来实现数据绑定。

和“数据绑定”对比

  • 定义上:最大的区别就是绑定的对象不一样,前者绑定“元数据”,后者绑定ActiveData。
  • 使用上:元数据绑定是扩展包引入,数据绑定是sdk内置
  • 功能上:元数据绑定更强大一些。后者只有单向绑定、双向绑定的功能。
  • 内部实现上:元数据绑定基于APT(Annotation Processing Tool)即注解处理器。数据绑定怎么实现的我也不知道,还请高人告知一二!

元数据绑定能干什么?

单向绑定@{}

  1. <Text 
  2.     metaDataBinding:text="@{ClockMetaData.message}"/> 

双向绑定@={}

  1. <TextField 
  2.     metaDataBinding:text="@={ClockMetaData.message}"/> 

绑定自定义函数*{}

  1. <TextField 
  2.     metaDataBinding:text="*{ClockMetaData.getTimeZone(@{ClockMetaData.hour})}"/> 

绑定资源文件${}

  1. <TextField 
  2.     metaDataBinding:image_src="${Media_icon_switch_enabled}"/> 

点击事件触发给元数据赋值#{}

  1. <TextField 
  2.     metaDataBinding:onClick="#{ClockMetaData.enabled = (@{ClockMetaData.enabled} == 1 ? 0 : 1)}"/> 

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-09-01 14:36:14

鸿蒙HarmonyOS应用

2021-08-23 10:14:20

鸿蒙HarmonyOS应用

2010-07-30 11:03:54

Flex数据绑定

2010-07-30 10:53:53

Flex数据绑定

2010-07-28 13:31:10

Flex数据绑定

2010-07-28 13:11:13

Flex数据绑定

2012-05-29 16:22:02

SpringMVC

2016-10-27 13:40:02

编程语言 数据库

2020-02-07 08:00:00

ExifTool提取文件开源

2010-08-12 10:43:19

Flex数据绑定

2010-07-28 13:40:44

Flex数据绑定

2011-12-05 13:44:34

JavaSpringMVC

2017-08-07 16:39:03

JSX动态数据

2009-07-28 08:24:16

GridView绑定数

2010-07-30 10:45:08

Flex数据绑定

2023-02-27 15:46:19

数据元元数据

2010-07-30 09:08:21

Flex数据绑定

2010-08-12 11:34:15

Flex数据绑定

2009-12-24 11:15:59

WPF数据绑定

2009-08-10 16:47:45

Visual C#数据
点赞
收藏

51CTO技术栈公众号