首页 > 其他分享 >工作学习:简单双向绑定

工作学习:简单双向绑定

时间:2023-07-22 17:12:03浏览次数:31  
标签:自定义 绑定 value 学习 myValue 双向 组件

双向绑定语法

在 WXML 中,普通的属性的绑定是单向的。例如:

<input value="{{value}}" />

如果使用 this.setData({ value: 'leaf' }) 来更新 value ,this.data.value 和输入框的中显示的值都会被更新为 leaf ;但如果用户修改了输入框里的值,却不会同时改变 this.data.value 。

如果需要在用户输入的同时改变 this.data.value ,需要借助简易双向绑定机制。此时,可以在对应项目之前加入 model: 前缀:

这样,如果输入框的值被改变了, this.data.value 也会同时改变。同时, WXML 中所有绑定了 value 的位置也会被一同更新, 数据监听器 也会被正常触发。

用于双向绑定的表达式有如下限制:

    1.只能是一个单一字段的绑定,如

  2.目前,尚不能 data 路径,如

在自定义组件中传递双向绑定

双向绑定同样可以使用在自定义组件上。如下的自定义组件:

Component({ properties: { myValue: String } })

 

<input model:value="{{myValue}}" />
  这个自定义组件将自身的 myValue 属性双向绑定到了组件内输入框的 value 属性上。这样,如果页面这样使用这个组件:  
<custom-component model:my-value="{{pageValue}}" />
 当输入框的值变更时,自定义组件的 myValue 属性会同时变更,这样,页面的 this.data.pageValue 也会同时变更,页面 WXML 中所有绑定了 pageValue 的位置也会被一同更新。

在自定义组件中触发双向绑定更新

自定义组件还可以自己触发双向绑定更新,做法就是:使用 setData 设置自身的属性。例如:

// custom-component.js Component({ properties: { myValue: String }, methods: { update: function() { // 更新 myValue this.setData({ myValue: 'leaf' }) } } })

<custom-component model:my-value="{{pageValue}}" />

 

当组件使用 setData 更新 myValue 时,页面的 this.data.pageValue 也会同时变更,页面 WXML 中所有绑定了 pageValue 的位置也会被一同更新。

 

 

 

     

 

标签:自定义,绑定,value,学习,myValue,双向,组件
From: https://www.cnblogs.com/xiamaocheng/p/17573726.html

相关文章

  • SpringBoot学习之路(一):SpringBoot的开发环境
    【说在前面的话】    作为一个java小白,从自己写下“HelloWorld!”开始,到现在使用spring框架开始写一点小练习项目,让自己的一开始对java的好奇,变成现在要掌握它的目标。身为一个学生,我现在还是有很多的时间去学到更多的,俗话说:“好记性不如烂笔头”,我虽然做不到,但是“烂键......
  • MQTT学习笔记
    客户端:mqttxforwindows,并提供基于互联网的mqtt服务,不用再搭建 MQTT的C语言编程:下载paho的包,在github上,有基于Linux的release版本,下载后,将其解压到任意目录,比如:/opt/mqtt目录结构如下: 安装完毕后,进行配置(如果不配置,动态链接库无法找到)设置动态链接库的搜索路径export......
  • java学习笔记
    目录值传递&引用传递WeakHashMap-弱引用MapHashMapResponseEntityMessageFormat.format-代码里直接打印输出如何将java项目的依赖打成一个大的jar包加载证书报错:Couldnotparsecertificate:java.io.IOException:Incompletedatapowermock使用注意jpa的使用注意AOP切面java......
  • pyhon 基础学习笔记(一)List
    1.有两个索引 2索引的切片L=[1,2,3,4,5,6]L[start:stop:step]如L[1,2,2] 3.列表增加元素L.append(9),L.append([2,3])尾部追加L.extend([1,2,3]) 尾部追加L.insert(3,5)位置3插入5L[2:2]=[8,9] 下标为2的位置插入8,9 3.列表删除元素L.remove(4)删除元素4......
  • 双向链表的实现
    //带头节点的双链表#include<stdio.h>#include<stdlib.h>typedefstructDNode{intdata;structDNode*prior;structDNode*next;}DNode;//初始化头结点DNode*Init_DLinkList(){DNode*L;L=(DNode*)malloc(sizeof(DNode));L->......
  • maven学习笔记
    1、maven的两大核心内容:依赖管理:对jar的统一管理(Maven提供了一个Maven的中央仓库,https://mvnrepository.com/,当我们在项目中添加完依赖之后,Maven会自动去中央仓库下载相关的依赖,并且解决依赖的依赖问题。),也可以是自己的仓库。项目构建:对项目进行编译、测试、打包、......
  • 深度优先搜索dfp学习
    >>定义深度优先搜索属于图算法的一种,英文缩写为DFS即DepthFirstSearch.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.(accordingtoBaidu)>>几个例子eg11215迷宫 (求是否有路径)http://ybt.ssoier.cn:8088/problem_show.php?pi......
  • Telegraf&Categraf 主题学习(I)
    基于Telegraf的数据收集系统https://zhuanlan.zhihu.com/p/53376293https://flashcat.cloud/docs/content/flashcat-monitor/categraf/1-introduction/https://n9e.github.io/docs/agent/telegraf/Telegraf监控客户端调研笔记1https://mp.weixin.qq.com/s/JeBa_YOJdsv_QOlCVD......
  • html学习day02
    HITML学习Day02一、媒体属性视频属性<video></video>属性:src:资源路径controls:控制条autoplay:自动播放音频属性<audio></audio>属性src:资源路径controls:控制条autoplay:自动播放二、页面结构元素名描述header标记头部区域的内容(用......
  • C语言学习笔记(三)函数和递归
    函数和递归库函数strcpy()​ 使用之前要先包含<string.h>​ 拷贝时会将\0一起拷贝(注意:/0是字符串结束的标志,但计算长度时不计入)memset()内存设置​ 使用之前要先包含<string.h>#include<stdio.h>#include<string.h>intmain(){ chararr[]="helloworld"; memset(ar......