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