小程序---原生开发---自定义组件

在开发过程中,我们经常需要创建一些公用组件以便方便我们多次调用。组件的功能以及事件的一个传递,这使得需要注意,有些组件可能样式一样,点击的事件效果会有所不同,所以组件需要功能多样化,方便使用

创建组件,使用微信开发者工具创建,直接选择创建组件的选项,所有的页面都会给创建好。

但是使用别的软件进行开发的时候,创建组件一定要创建完整。比如说一个组件中有xx.js  xx.wxml  xx.wxss  xx.json

如果你少一个xx.json文件,会导致你引入组件的时候找不到这个文件。为了避免出错,创建所有的页面即可。

组件的js页面是这样的

var app = getApp()
Component({

  behaviors: [],

  // 属性定义(详情参见下文)
  properties: {
    myProperty: { // 属性名
      type: String,
      value: ''
    },
    myProperty2: String // 简化的定义方式
  },

  data: {}, // 私有数据,可用于模板渲染

  lifetimes: {
    // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
    attached: function () { },
    moved: function () { },
    detached: function () { },
  },

  // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
  attached: function () { }, // 此处attached的声明会被lifetimes字段中的声明覆盖
  ready: function() { },

  pageLifetimes: {
    // 组件所在页面的生命周期函数
    show: function () { },
    hide: function () { },
    resize: function () { },
  },

  methods: {
    onMyButtonTap: function(){
      this.setData({
        // 更新属性和数据的方法与更新页面数据的方法类似
      })
    },
    // 内部方法建议以下划线开头
    _myPrivateMethod: function(){
      // 这里将 data.A[0].B 设为 'myPrivateData'
      this.setData({
        'A[0].B': 'myPrivateData'
      })
    },
    _propertyChange: function(newVal, oldVal) {

    }
  }

})

和普通的js页面是不一样的

当我们有数据需要传递的时候在properties中写出即可,例如

properties: {
    navbarData: { // navbarData 由父页面传递的数据
      type: Object,
      value: {
        gobank: true,
        gohome: true,
        has_search: false,
      },
      observer: function (newVal, oldVal) { 
      }
    }
  },

当我们有点击事件需要传递的时候,需要传递什么这个看需求,我这里只写传递点击事件

methods: {
    goback: function () {
	  this.triggerEvent('goback')
    },
    goHome: function () {
      wx.navigateTo({
        url: '/pages/index/index',
      });
    }
  }

当我们在页面中使用需要现在aa.json文件中先调用才可以使用,可以在app.json中全局调用,也可以在使用页面下的.json文件中调用,局部调用,看需求

"usingComponents": {
		"headpage":"/components/pagehead/pagehead"
	}

使用页面index.wxml,这里的点击事件bind:xxx     xxx这个名称要和在组件中triggerEvent中的名称保持一致,如果有误,则无法调用点击事件

<!--index.wxml-->
	<headpage bind:goback='goback'></headpage>
<view class="container" bindtap="goToPage">
 首页
</view>

index.js中的点击事件,书写我们需要处理的操作即可

 goback(){
	  navigUrl.navigatoBackUrl('../index/index')
  }
  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值