原文链接:https://mp.weixin.qq.com/s/6v…
西江月·太极未分混沌
[元] 王惟一
太极未分混沌,两仪已非其中。
一阳才动破鸿蒙,造化从兹使用。
水火升沉南北,木金距离西东。
略移斗柄指坤宫,尽把五行错综。
自Angular.js面世后,给前端界带来MVVM(Model-View-ViewModel)的分层架构思维,这也对简直所有的支流前端框架影响颇深,Angular.js也带来另一个风行概念:双向数据绑定,这个次要体现在表单控件与其余控件的内容联动上,即便除了Vue以外的其余风行框架(React、Augular2.0 当前)都不再有双向数据绑定的语法糖,但在理论我的项目中,所有的前端开发人员都会去实现这一个性。
鸿蒙OS的JS利用框架延用的是一品种小程序的Web开发方式,同React和微信小程序一样,以单向数据流的模式连通JS脚本变量与标记语言(html、wxml、hml)实现的界面,因而自主实现双向数据绑定也就成了绕不开的话题。
明天就在鸿蒙OS利用开发中实现双向数据绑定,顺便填平一些坑,先上外围代码。
index.hml代码如下:
<div class="container">
<text class="title">
{{title}}
</text>
<!-- 坑点1:官网文档给出的事件属性都没有on前缀,理论应用本人要加上:onclick、onchange等 -->
<!-- 坑点2:穿戴设施不反对input单行文本;只有TV我的项目反对;-->
<input type="text" onchange="chageModel"
value="{{title}}"
style="width:300px;height:50px;color:blue;background-color:#fff"/>
<!-- input控件属性:type="text" 指定为单行文本控件 -->
<!-- input控件属性:value="{{title}}" 文本框值绑定js脚本变量title -->
<!-- input控件属性:onchange="chageModel" 文本框内容扭转触发自定义函数chageModel -->
<!-- input控件属性: 行内款式属性与CSS基本相同 -->
</div>
index.js代码如下:
export default {
data: {
title: "", //js脚本变量title
},
onInit() {
this.title = "鸿蒙OS双向数据绑定";
},
chageModel(val_obj){
//obj是事件对象,官网文档有坑
console.info("info信息:"+JSON.stringify(val_obj));
console.log("log信息:"+JSON.stringify(val_obj));
//坑点3:console.log和console.info都不能打印对象,要通过JSON.stringify转化;
//坑点4:valobj的取值属性是text;
this.title = val_obj.text;
//UI框架是单向数据流,要事件驱动实现双向数据绑定
}
}
实现的代码非常简单,次要填了4个坑:
- 官网文档给出的事件属性都没有on前缀,理论应用本人要加上:onclick、onchange等
- 穿戴设施不反对input单行文本,这个官网文档没有提到;
- console.log和console.info都不能打印对象,要通过JSON.stringify转化;
- onchange事件对象参数valobj的取值属性是text ,官网给出的对象模式是{ value:inputValue },这个要通过打印对象能力判断进去;
这些坑都不是很大,有开发教训的同学根本都能很快填平,也能够浏览参考官网给出的案例showcase。
附上文档链接:
input组件参考文档:
https://developer.harmonyos.c…
官网showcase代码:
https://openharmony.gitee.com…
附上console.log和console.info打印控制台截图:
发表回复