当前位置: 首页 > news >正文

微信小程序开发入门与实战(数据监听)

请添加图片描述

@作者 : SYFStrive

 
请添加图片描述

📜: 微信小程序
🥧: 微信小程序专栏链接🦄
🥧: 感谢支持,学累了可以先看小段由小胖给大家带来的街舞😀
请添加图片描述
在这里插入图片描述
相关专栏

👉 微信小程序(🔥)

目录

    • 数据、方法和属性
    •     1、 data 数据
    •     2、methods 方法
    •     3、properties 属性
    •     4、 data 和 properties 的区别
    •     5、使用 setData 修改 properties 的值
    • 数据监听器
    •     1、什么是数据监听器
    •     2、监听对象属性的变化
  • 最后

数据、方法和属性

    1、 data 数据

组件模板渲染的私有数据如 👇

/**
 * 组件的方法列表
 */
methods: {
    addCount(){
        this.setData({
            count:this.data.count+1
        })
        this._TiShi()
    },
    _TiShi(){
        wx.showToast({
          title: 'count是'+this.data.count
        })    
    }
},

    2、methods 方法

在小程序组件中,事件处理函数和自定义方法需要定义到 methods 节点中,

示例代码如 👇

/**
 * 组件的方法列表
 */
methods: {
    addCount(){
        this.setData({
            count:this.data.count+1
        })
        this._TiShi()
    },
    _TiShi(){
        wx.showToast({
          title: 'count是'+this.data.count
        })    
    }
},

    3、properties 属性

在小程序组件中,properties 是组件的对外属性,用来接收外界传递到组件中的数据。

示例代码如 👇

WXML
<text1 max="5"></text1> //默认值是15 这里设置最大值为5,覆盖了最大值

COMPONENT
<view>添加的值为:{{count}}</view>
<button bindtap="addCount">点击按钮</button>

JS

/**
 * 组件的属性列表
 */
properties: {
    max:{
        type:Number,
        value:15
    }
},

/**
 * 组件的方法列表
 */
methods: {
    addCount(){
        if(this.data.count>=this.properties.max) return;
        this.setData({
            count:this.data.count+1
        })
        this._TiShi()
    },
    //提示框
    _TiShi(){
        wx.showToast({
          title: 'count是'+this.data.count
        })    
    }
},

    4、 data 和 properties 的区别

在小程序的组件中,properties 属性和 data 数据的用法相同,它们都是可读可写的 区别如 👇

  1. data 更倾向于存储组件的私有数据
  2. properties 更倾向于存储外界传递到组件中的数据

测试两者是否相等如 👇

/**
 * 组件的属性列表
 */
properties: {
    max:{
        type:Number,
        value:15
    }
},
/**
 * 组件的初始数据
 */
data: {
    count:1
},
proData(){
    console.log(this.data.max);
    console.log(this.data.count);
    console.log(this.data===this.properties);
}

    5、使用 setData 修改 properties 的值

由于 data 数据和 properties 属性在本质上没有任何区别,因此 properties 属性的值也可以用于页面渲染,或使用 setData 为 properties 中的属性重新赋值

示例代码如 👇

properties: {
  max:{
      type:Number,
      value:15
  }
},
methods: {
  addCount(){
      if(this.data.count>=this.properties.max) return;
      this.setData({
          count:this.data.count+1,
          max:this.properties.max+1
      })
  },
}

数据监听器

    1、什么是数据监听器

数据监听器用于监听和响应任何属性和数据字段的变化,从而执行特定的操作。它的作用类似于 vue 中的watch 侦听器。在小程序组件中

数据监听器的基本语法格式如 👇

'字段A','字段B':function(A值,B值){

}

    2、监听对象属性的变化

数据监听器支持监听对象中单个或多个属性的变化

代码实习


WXML-------------
<view class="ColorBox" style="background-color: rgb({{funllColor}});">颜色的值为:{{funllColor}}</view>

<button size="mini" bindtap="RValue" type="default">R</button>
<button size="mini" bindtap="GValue" type="primary">G</button>
<button size="mini" bindtap="BValue" type="warn">B</button>

<view>
颜色的RGB值为:{{rgbValue.r}}-{{rgbValue.g}}-{{rgbValue.b}}
</view>

WXSS-------------
<view class="ColorBox" style="background-color: rgb({{funllColor}});">颜色的值为:{{funllColor}}</view>

<button size="mini" bindtap="RValue" type="default">R</button>
<button size="mini" bindtap="GValue" type="primary">G</button>
<button size="mini" bindtap="BValue" type="warn">B</button>

<view>
颜色的RGB值为:{{rgbValue.r}}-{{rgbValue.g}}-{{rgbValue.b}}
</view>

WXJS-------------
// components/text1/text1.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
      rgbValue:{
        r:0,
        g:0,
        b:0
      },
      funllColor:'0,0,0'
  },

  observers:{
    "rgbValue.r, rgbValue.g,rgbValue.b":function(r,g,b){
      this.setData({
        funllColor:`${r},${g},${b}`
      })
    }
  },
  /**
   * 组件的方法列表
   */
  methods: {
    RValue(){
      this.setData({
        "rgbValue.r":this.data.rgbValue.g+5 >255 ? 255: this.data.rgbValue.r+5
      })
  },

  GValue(){
    this.setData({
      "rgbValue.g":this.data.rgbValue.g+5 >255 ? 255: this.data.rgbValue.g+5
    })
  },
  BValue(){
    this.setData({
      "rgbValue.b":this.data.rgbValue.b+5>255 ? 255: this.data.rgbValue.b+5
    })
  },
  }
})

如 👇

在这里插入图片描述

最后

在这里插入图片描述
本文到这里就结束了,大佬们的支持是我持续更新的最大动力,希望这篇文章能帮到大家💪

 

                 相关专栏连接🔗

在这里插入图片描述

下篇文章再见ヾ( ̄▽ ̄)ByeBye

在这里插入图片描述

相关文章:

  • 【论文阅读】提升的自动作文评分通过Prompt预测和匹配
  • JPA-Specification常用条件查询构造方式
  • 瑞吉外卖(19) - 新增套餐业务开发
  • Android 的定位分层架构
  • 基于docker搭建es集群
  • 2.可视化基础(上)
  • 解决Vue项目中ESLint和Prettier冲突问题[Vue.js项目实践: 新冠自检系统]
  • 【misc】buu-面具下的flag——zip伪加密+用NTFS流隐藏文件
  • java毕业设计企业安全与设备管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
  • Message Bus Solace Deeper Dive
  • Android-AGP之手写你的第一款自定义plugin插件
  • 入门力扣自学笔记159 C++ (题目编号788)
  • java毕业设计奇妙店铺电子商务网站源码+lw文档+mybatis+系统+mysql数据库+调试
  • 类与对象(十四)----包package
  • Codeforces Round #820 (Div. 3)A. Two Elevators
  • 【391天】每日项目总结系列128(2018.03.03)
  • 2017届校招提前批面试回顾
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • CentOS6 编译安装 redis-3.2.3
  • mongo索引构建
  • MySQL数据库运维之数据恢复
  • Vim 折腾记
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 浏览器缓存机制分析
  • 悄悄地说一个bug
  • # include “ “ 和 # include < >两者的区别
  • # 飞书APP集成平台-数字化落地
  • #QT项目实战(天气预报)
  • (2)STL算法之元素计数
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (十) 初识 Docker file
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (算法)求1到1亿间的质数或素数
  • (转)树状数组
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .Net Redis的秒杀Dome和异步执行
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .Net Winform开发笔记(一)
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .net打印*三角形
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @synthesize和@dynamic分别有什么作用?
  • @Transactional 详解
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [CCIE历程]CCIE # 20604
  • [codeforces] 25E Test || hash
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [hdu 4552] 怪盗基德的挑战书
  • [Linux] CE知识随笔含Ansible、防火墙、VIM、其他服务
  • [MRCTF2020]Ez_bypass1