美文网首页
小程序 基本组件功能

小程序 基本组件功能

作者: 子语喵 | 来源:发表于2019-03-07 13:00 被阅读0次
    组件是一个单独的文件,里面包含着功能,样式,wxml。用于代码复用率高的地方,或是功能点特殊的地方。我们即可来编写组件。

    1.在当前目录下创建component文件,组件目录


    image.png

    2.在notice.json里面要设置属性

    {
       "component": true
    }
    

    3.要注意组件的wxss.的样式规范

    //组件和引用组件的页面不能使用id选择器(#a)、属性选择器([a])和标签名选择器,请改用class选择器。
    //组件和引用组件的页面中使用后代选择器(.a .b)在一些极端情况下会有非预期的表现,如遇,请避免使用。
    //子元素选择器(.a>.b)只能用于 view 组件与其子节点之间,用于其他组件可能导致非预期的情况。
    //继承样式,如 font 、 color ,会从组件外继承到组件内。
    //除继承样式外, app.wxss 中的样式、组件所在页面的的样式对自定义组件无效。
    

    4.子组件:着重点即js部分

    Component({
        //接受父组件传过来的值,及属性的默认值
        properties: {
            obj:{
                type:Object,
                value:'' 
            },
        },
        //组件的内部数据,和 properties 一同用于组件的模板渲染
        data: {
            
        }, 
        //组件数据字段监听器,用于监听 properties 和 data 的变化
        observers:{},
        //组件生命周期 在组件实例进入页面节点树时执行
        attached: function () {
    
            var self = this;
            //子组件会于父组件之前加载,传值时需要延时一秒在赋值。目前我也没有想出什么好办法。欢迎大家留言
            setTimeout(() =>{ //
                self.setData({
    
                });
            },1000)
        },
        //方法
        methods: {
            bindIKnow: function(){
                // detail对象,提供给事件监听函数
                var myEventDetail = {
                    isShowNotice:false,
                } 
                var myEventOption = {} // 触发事件的选项
    
                //通过triggerEvent方法,定义要给父组件传值
                this.triggerEvent('isShowNoticeFun', myEventDetail, myEventOption)
            },
            testFun: function(){
                console.log(123)
            },
        }
    
    })
    

    5.那么在父组件调用时应在父组件的json中引用

      "usingComponents": {
          "compontents-notice":"/components/notice/notice"
      },
    //要注意引用路径 带有../或是../../这样的路径在真机中会报错,不识别。
    

    6.父组件的wxml中引用

    //id为 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象。
    //通过obj来给子组件传值
    //bind:isShowNoticeFun是接受子组件自定义的事件
    //ShowNoticeFun 是在父组件定义的事件,用来接受子组件传过来的值
    <compontents-notice id="notice" bind:isShowNoticeFun="ShowNoticeFun" obj="{{objs}}" ></compontents-notice>
    

    7.父组件js。

    ShowNoticeFun(e) {
      console.log(e.detail) //子组件带过来的值  isShowNotice
      
      // 父组件也可主动调用子组件的方法 
      this.selectComponent('#notice').testFun()
    },
    

    总结
    1.创建组件
    wxml,wxss,js,json,
    2.在父组件中引用
    父组件json中:"component-notice:/components/notice/notice"
    3.父子间通讯
    父 通过 wxml 传值
    子 通过 triggerEvent 方法
    4.父主动调用子方法
    this.selectComponent(id名称).方法()

    欢迎大家前来指点!

    相关文章

      网友评论

          本文标题:小程序 基本组件功能

          本文链接:https://www.haomeiwen.com/subject/jzfcpqtx.html