自定义组件的创建:
如何创建:
右键选择新建component
创建完成之后需要打开app.json,这是全局使用这个组件,想要单独的页面使用,就在当前页面的json文件中定义
"usingComponents": { "my-zj": "./components/test/test" }
如何使用:打开任意页面的wxml页面
<my-zj></my-zj>
插槽的作用:页面可以向组件传入信息
组件插槽的使用:
定义插槽:wxml页面
<slot name="one"></slot>
页面如何传入内容
<my-zj> <view slot="one">插槽的内容</view> </my-zj>
需要注意: 默认插槽每个组件只能使用一个,开启多个插槽需要在js文件中设置options:{}在这个里面开启
组件js页面开启多个插槽:
options:{ // 开启多个插槽 multipleSlots:true }
组件的wxml页面:
<slot name="one"></slot> <slot name="two"></slot>
页面的wxml内容:
<my-zj> <view slot="one">插槽的内容</view> <view slot="two">第二个插槽的内容</view> </my-zj>
多个插槽如何区分的: 单个插槽不需要定义名称
组件接收页面传来的值:
在页面的js文件中定义一个count变量,赋值101
count:101
页面wxml页面上传值:
<my-zj count="{{count}}" id="idChli"> <view slot="one">插槽的内容</view> <view slot="two">第二个插槽的内容</view> </my-zj>
组件如何接收变量值:
组件js文件:
properties: { count:Number },
定义一个方法每次点击就加五
methods: { add(){ this.setData({ count:this.properties.count+5 }); } }
wxml页面:
<view>{{count}}</view> <button bindtap="add" type="primary">n+1</button>
这样就可以获取页面传过来的内容了
页面如何接收组件传过来的参数呢?
组件js文件:
methods: { add(){ this.setData({ count:this.properties.count+5 }); // 从这里就能获取得到父组件中的方法内容并且传递内容 this.triggerEvent("md",{value:this.properties.count}); } }
页面wxml文件:
<my-zj count="{{count}}" id="idChli" bind:md="md"> <view slot="one">插槽的内容</view> <view slot="two">第二个插槽的内容</view> </my-zj>
页面js进行接收
md(e){ //console.log(e); // 通过方法中参数得到数据传输 this.setData({ count:e.detail.value }); },
如何在页面使用组件中的方法:
getChil(){ var child = this.selectComponent("#idChli"); child.add(); },
<my-zj count="{{count}}" id="idChli" bind:updateDa="md"> <view slot="one">插槽的内容</view> <view slot="two">第二个插槽的内容</view> </my-zj> <view class="mes">父组件中的count值:{{count}}</view> <button type="primary" bindtap="getChil">父获取子值</button>