自定义组件 Demo:json
单插槽bash
子组件代码设置框架
//js文件
Component({
properties: {
innerText: {
type: String,
value: 'hello world'
}
},
data: {
},
methods: {
}
})
复制代码
//json文件
{
"component": true
}
复制代码
wxml文件
<view class="inner">
{{innerText}}
</view>
<slot></slot>
复制代码
父组件代码设置函数
//json文件
{
"usingComponents": {
"component": "/pages/learnComponent/component"
}
}
复制代码
//wxml文件
<view>
<component>
<view class="inner">
{{innerText}}
</view>
<slot></slot>
<text>这是文字</text>
</component>
</view>
复制代码
多插槽ui
组件默认只能有一个<slot>
,若是须要添加多个插槽,首先须要在组件js中声明this
Component({
options: {
multipleSlots: true // 在组件定义时的选项中启用多slot支持
}
})
复制代码
而后须要给 命名,以 name 来区分各个插槽spa
<slot>
数据传递 父=》子3d
//子
Component({
properties: {
innerText: {
type: String,
value: '你好吗'
}
}
})
//父
<component innerText='我很差'></component>
复制代码
父调用子组件的方法代理
showPickerDate(e) {
this.setData({ showPicker: true })
// 调用子组件中methods的onshow方法
this.selectComponent('#picker-date').onshow()
},
复制代码
子传父code
methods: {
onshow() {
console.log(this.data.defaultValue)
},
// 传递给父组件
cancelBut: function ( ) {
var myEventDetail = { pickerShow: false, type: 'cancel' } // detail对象,提供给事件监听函数
this.triggerEvent('myevent', myEventDetail) //myevent自定义名称事件,父组件中使用
}
复制代码
生命周期
事件
bindtap
bind事件绑定不会阻止冒泡事件向上冒泡
冒泡应用:不一样的对象同时捕获同一事件,并调用本身的专属处理程序作本身的事情,就像老板一下命令,各自员工作本身岗位上的工做去了(事件代理)
catchtap
catch事件绑定能够阻止冒泡事件向上冒泡
UI框架