微信小程序(关于Component组件中Behavior使用(里面包含了observers的事件监听))

  1. 当看微信小程序文档的时候有种朦胧感(之前开发小程序没有使用过)
  2. 对于Behavior我的理解就是在其Component组件中引入复用性比较高的data(数据),properties(也是数据如果有相同会覆盖data里面的数据(还可以定义数据类型,组件传参也可以用其来接收)),以及methods(方法),也就是所在组件能使用的函数进行一个导出进行复用而已。着重复用(和其我们封装函数导出进行复用一样的道理)。
  3. 具体的使用方法如下:直接贴上代码

这里面是组件的wxml代码

<!-- 我是组件 -->
<!-- 我是demoBehavior里面的方法以及数据 -->
<button bindtap='myDemoBehaviorMethod'>{{myDemoBehaviorData}}</button>
<!-- 我是引入在demoBehavior中的公用数据以及方法 -->
<button bindtap='myClickChildBehavior'>{{myDataChildrenBehaviors}}</button>
<!-- 我是模拟 demoBehavior多个数据与方法 这个会省略但是会在添加在代码解释当中-->
<button bindtap='myDemo'>{{myDataDemo}}</button>
<!-- 我是observer属性数据监听 -->
<view>{{myDataChange*myDataChangeTwo}}</view>
<view>{{newData}}</view>

这里面是组件的js代码

// components/formOne/formOne.js
var demoBehaviorParent = require('../BehaviorsJs/demoBehaviorParent.js')
Component({
  /**
   * 组件的属性列表
   */
  behaviors: [demoBehaviorParent],
  properties: {
    isTrueOne: { //这里定义了modalHidden属性,属性值可以在组件使用时指定.写法为modal-hidden 
      type: Boolean,
      default: false
    },
    isDisableNext: {
      type: Boolean,
      value: false
    }
  },
  attached: function() {
    console.log(this)
  },
  /**
   * 组件的初始数据
   */
  data: {
    isTrue: false,
    myDataChange:10,
    myDataChangeTwo: 10,
    newData:0
  },
  //观察者:属性监听,监听数据的改变,改变数据做某些事情
  // observers数据监听器可以用于监听和响应任何属性和数据字段的变化
  observers: { 
    'myDemoBehaviorData'(myDemoBehaviorData) { //单个监听数据(这个数据是来自于demoBehaviorParentJs文件当中的数据)
      console.log(myDemoBehaviorData)
    },
    'myDataChange,myDataChangeTwo'(myDataChange, myDataChangeTwo) { //多个监听 
    //  数据改变可以做一下事情 (比如数据改变,总价也需要更改)
      this.setData({
        newData: myDataChange * myDataChangeTwo
      })
    },
  },

  /**
   * 组件的方法列表
   */
  methods: {
    clickMe(e) {
      this.setData({
        myDataChange: 4,
        // myDataChangeTwo: 100,  // 加上也可以
      })
    },
  }
})


})

那么在其引入组件当中,behaviors当中的数据以及方法的导入(先是parent父js文件共享)

//  这里可以嵌套导入另外一个behaviorJs当中的达到公用数据
var demoBehaviorChild = require('demoBehaviorChild')
// var demoB = require('DEMO')  // 可以引入多个
module.exports=Behavior({
  // 把引入的名字直接运用在behaviors当中即可
  behaviors: [demoBehaviorChild],
  // behaviors: [demoBehaviorChild, demoB],  //当然也可以引入多个,把命名添加到behaviors即可
  // 数据共享properties和data
  properties: {
    myBehaviorProperty: {
      type: String,
      value:'我是properties是面String类型的数据'
    }
  },
  data: {
    myDemoBehaviorData: '这是demoBehaviorJs内的data数据'
  },
  // 这个相当与pages里面的onload,可以请求数据request
  attached: function () { },
  // 方法的调用
  methods: {
    myDemoBehaviorMethod: function () {
      console.log('这是执行myBehavior内引入的myBehavior2中的方法')
    }
  }
})

其次就是嵌套子共享数据的js代码

//  这里没有引入其他Behavior公用数据以及方法
module.exports = Behavior({
   behavior:[],
   properties:{
     myDataChildrenBehaviors:{
       type:String,
       value:'我是嵌套demoBehaviorJs里面的数据'
     }
   },
   data:{
     myDataOne:'模拟数据',
     myDataTwo: '模拟数据二',
   },
   methods:{
     myClickChildBehavior(){
       console.log('我是嵌套demoBehaviorJs里面的方法')
     }
   }
})
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值