• 微信小程序开发六(自定义组件)


    自定义组件的创建:

          如何创建:

        

        

        

        

         右键选择新建component

        

           创建完成之后需要打开app.json,这是全局使用这个组件,想要单独的页面使用,就在当前页面的json文件中定义

    1. "usingComponents": {
    2. "my-zj": "./components/test/test"
    3. }

     如何使用:打开任意页面的wxml页面

          

    <my-zj></my-zj>

    插槽的作用:页面可以向组件传入信息

    组件插槽的使用:

         定义插槽:wxml页面

       

    <slot name="one"></slot>
    

         页面如何传入内容

    1. <my-zj>
    2. <view slot="one">插槽的内容</view>
    3. </my-zj>

          需要注意: 默认插槽每个组件只能使用一个,开启多个插槽需要在js文件中设置options:{}在这个里面开启

         组件js页面开启多个插槽:

    1. options:{
    2. // 开启多个插槽
    3. multipleSlots:true
    4. }

         组件的wxml页面:

    1. <slot name="one"></slot>
    2. <slot name="two"></slot>

         页面的wxml内容:

    1. <my-zj>
    2. <view slot="one">插槽的内容</view>
    3. <view slot="two">第二个插槽的内容</view>
    4. </my-zj>

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        多个插槽如何区分的: 单个插槽不需要定义名称

     

     组件接收页面传来的值:

          在页面的js文件中定义一个count变量,赋值101

      count:101

      页面wxml页面上传值:

    1. <my-zj count="{{count}}" id="idChli">
    2. <view slot="one">插槽的内容</view>
    3. <view slot="two">第二个插槽的内容</view>
    4. </my-zj>

       组件如何接收变量值:

           组件js文件:

    1. properties: {
    2. count:Number
    3. },

        定义一个方法每次点击就加五

    1. methods: {
    2. add(){
    3. this.setData({
    4. count:this.properties.count+5
    5. });
    6. }
    7. }

           wxml页面:

    1. <view>{{count}}</view>
    2. <button bindtap="add" type="primary">n+1</button>

        这样就可以获取页面传过来的内容了

       页面如何接收组件传过来的参数呢?

            组件js文件:

    1. methods: {
    2. add(){
    3. this.setData({
    4. count:this.properties.count+5
    5. });
    6. // 从这里就能获取得到父组件中的方法内容并且传递内容
    7. this.triggerEvent("md",{value:this.properties.count});
    8. }
    9. }

           页面wxml文件:

    1. <my-zj count="{{count}}" id="idChli" bind:md="md">
    2. <view slot="one">插槽的内容</view>
    3. <view slot="two">第二个插槽的内容</view>
    4. </my-zj>

         页面js进行接收

    1. md(e){
    2. //console.log(e);
    3. // 通过方法中参数得到数据传输
    4. this.setData({
    5. count:e.detail.value
    6. });
    7. },

        如何在页面使用组件中的方法:

    1. getChil(){
    2. var child = this.selectComponent("#idChli");
    3. child.add();
    4. },

     

        

    1. <my-zj count="{{count}}" id="idChli" bind:updateDa="md">
    2. <view slot="one">插槽的内容</view>
    3. <view slot="two">第二个插槽的内容</view>
    4. </my-zj>
    5. <view class="mes">父组件中的count值:{{count}}</view>
    6. <button type="primary" bindtap="getChil">父获取子值</button>

       

  • 相关阅读:
    smutil数据加密
    Python8-使用json模块解析JSON文件
    windows下wsl2中的ubuntu和ubuntu系统下docker使用gpu的异同
    WMS仓储管理系统的主要类型及其特性和适用场景
    事务的概念-事务的概念、事务的定义(BEGIN TRANSACTION、COMMIT、ROLLBACK)
    有用的CSS代码块
    c++征途 --- 引用
    Python绘制各种图形(模板)
    自定义appbarTitle + TabBarView 实现类似安卓tabHost+Fragment
    【微信小程序】发布投票与用户投票完整讲解
  • 原文地址:https://blog.csdn.net/weixin_41670405/article/details/138081790