原生小程序 之 自定义组件的 监听数据 (简单数据、复杂数据对象)

原生小程序 之 自定义组件的 监听数据 - 简单数据

监听单个数据 与 多个数据

父组件

<!--pages/info/info.wxml-->
<view>
  <test></test>
</view>

// pages/info/info.js
Page({
  data: {
  },
})

{
  "usingComponents": {
    "test":"/component/test/test"
  }
}

子组件

<!--component/test/test.wxml-->
<view>
  <view>{{num1}} + {{num2}} = {{ sum }} </view>
  <button bindtap="add">自增num1</button>
  <button bindtap="add2">自增num2</button>
</view>

// component/test/test.js
Component({
  properties: {
  },
  data: {
    num1:0,
    num2:0,
    sum:0
  },
  methods: {
    add(){
      this.setData({
        num1: this.data.num1 + 1
      })
    },
    add2(){
      this.setData({
        num2: this.data.num2 +1
      })
    }
  },
  // 监听数据
  observers:{
    // 监听多个数据,使用, 分开
    'num1,num2':function(newV1,newV2){
      // console.log("newV",newV1,newV2);
      this.setData({
        sum:newV1 + newV2
      })
    },
    // 监听一个值的时候
    'num1':function(newV1){
      console.log("newV1",newV1);
    }
  }
})

  • 效果
    在这里插入图片描述

原生小程序 之 自定义组件的 监听数据 复杂数据对象

  • 在这里插入图片描述

父组件

<!--pages/info/info.wxml-->
<view>
  <test></test>
</view>

// pages/info/info.js
Page({
  data: {
  },
})

{
  "usingComponents": {
    "test":"/component/test/test"
  }
}

子组件

<!--component/test/test.wxml-->
<view>
  <view style=" backGround:rgb({{fullColor}});color:#fff">fullColor - {{ fullColor }}  </view>
  <button bindtap="changeR">R</button>
  <button bindtap="changeG">G</button>
  <button bindtap="changeB">B</button>
</view>

  // component/test/test.js
  Component({
    properties: {
    },
    data: {
      rgb:{
        r:0,g:0,b:0
      },
      fullColor:"0,0,0" // 完整的 rgb 数据值
    },
    methods: {
      changeR(){
        this.setData({
          'rgb.r': this.data.rgb.r + 5 > 255 ? 255 :  this.data.rgb.r + 5 
        })
      },
      changeG(){
        this.setData({
          'rgb.g': this.data.rgb.g + 5 > 255 ? 255 :  this.data.rgb.g + 5 
        })
      },
      changeB(){
        this.setData({
          'rgb.b': this.data.rgb.b + 5 > 255 ? 255 :  this.data.rgb.b + 5 
        })
      },
    },
    // 监听数据
    observers:{
      // 监听对象 上的属性值
      // 'rgb.r,rgb.g,rgb.b':function(newV1,newV2,newV3){
      //   this.setData({
      //     fullColor: `${newV1},${newV2},${newV3}` 
      //   })
      // },
      // 监听整个对象
      'rgb.**':function(obj){
        this.setData({
          fullColor: `${obj.r},${obj.g},${obj.b}` 
        })
      },
    }
  })

效果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值