原生小程序 之 自定义组件 纯数据字段

原生小程序 之 自定义组件 纯数据字段

在这里插入图片描述
在这里插入图片描述

父组件

<!--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({
    options:{
      // 指定所以 _ 开头的数据字段 为纯数据字段
      pureDataPattern:/^_/
    },
    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}` 
        })
      },
    }
  })

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值