小程序组件化开发之component组件
2019-02-22 14:35
162 查看
我们在上篇博文里面介绍了小程序的template模板,这里介绍一下component组件。
我们创建template模板的时候,只创建了wxml和wxss文件,并没有json和js文件,而且数据交换以及事件都是在调用的时候操作。今天介绍的component组件则有自己的业务逻辑,可以看做一个独立的page页面,里面也有js和json文件。简单来说,如果只是展示,使用template就足够了,如果涉及到的业务逻辑交互比较多,那就最好使用component组件了。
创建组件
和template一样,也是在根目录创建一个存放组件的目录,里面创建二级目录,用于区分不同的组件,然后创建对应的页面文件,如下:
组件文件内容
我们还是以弹窗为例来介绍。
popup.wxml文件:
<view class="wx-popup" hidden="{{!isShow}}"> <view class='popup-container'> <view class="wx-popup-title">{{title}}</view> <view class="wx-popup-con">{{content}}</view> <view class="wx-popup-btn"> <text class="btn-no" bindtap='_error'>{{btn_no}}</text> <text class="btn-ok" bindtap='_success' class='confirm'>{{btn_ok}}</text> </view> </view> </view>
可以看到里面不需要任何标签。
wxss文件:
wxss文件内容和template的wxss文件内容一样,这里不在赘述
popup.json文件:
{ "component": true, "usingComponents": {} }
这里是固定格式,把component 设为true
wxjs文件:
Component({ options: { multipleSlots: true // 在组件定义时的选项中启用多slot支持 }, /** * 组件的属性列表 */ properties: { isShow:{ type: Number, value:1 }, title: { // 属性名 type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型) value: '标题' // 属性初始值(可选),如果未指定则会根据类型选择一个 }, // 弹窗内容 content: { type: String, value: '内容' }, // 弹窗取消按钮文字 cancelText: { type: String, value: '取消' }, // 弹窗确认按钮文字 confirmText: { type: String, value: '确定' } }, /** * 组件的初始数据 */ data: { flag: true, }, /** * 组件的方法列表 */ methods: { //隐藏弹框 hidePopup: function () { this.setData({ isShow: !this.data.isShow }) }, //展示弹框 showPopup() { this.setData({ flag: !this.data.flag }) }, /* * 内部私有方法建议以下划线开头 * triggerEvent 用于触发事件 */ _cancelEvent() { //触发取消回调==和外界交换的事件是cancel this.triggerEvent("cancel"); }, _confirmEvent() { //触发成功回调==和外界交换的事件是confirm this.triggerEvent("confirm"); } } })
组件创建完成。
父模板使用组件
index.json文件引入组件(不需要单独引入wxml和wxss文件):
{ "usingComponents": { "popup": "/component/popup/popup" } }
前面的popup是自己给组件起的名字,在wxml里面使用:
index.wxml使用组件:
<popup id='popup' title='标题' content='我是内容' cancelText='取消' confirmText='确定' bind:cancel="cancel" bind:confirm="confirm"> </popup>
上面id的内容就是json文件定义的组件名字。
title、content等都是组件的属性值,这些值可以在父组件里面修改:
this.popup.setData({'title':'我是标题'});
bind 后面是组件的事件。在调用组件的js文件里面使用此方法,如下:
cancel(){ console.log('点击了取消'); this.popup.setData({'title':'我是标题'});}, confirm() { console.log('点击了确定'); }, showPopup() { this.popup.showPopup(); },
组件的定义及使用就是这样的,非常简单。
相关文章推荐
- [微信小程序]组件化开发,以一个自定义模块框组件当做示例(附完整示例代码和效果图)
- [微信小程序]组件化开发,以一个自定义模块框组件当做示例(附完整示例代码和效果图)
- 微信小程序开发——map地图组件,定位,并手动修改位置偏差。
- Joomla2.5 Component 组件开发入门之HelloWorld 详解!
- 开发 | 微信小程序audio音频播放组件+api_wx.createAudioContext
- 微信小程序入门与实战 常用组件API开发技巧项目实战
- 微信小程序开发指南合集 各类组件用法技巧
- Yii Framework 开发教程(6) CComponent 组件
- 微信小程序开发之webview组件内网页实现微信原生支付
- 小程序组件开发坑
- Android程序开发入门——组件生命周期之Broadcast receiver
- openfire的组件(Component)开发
- 小程序组件化开发框架---wepy 项目创建
- 小程序解决方案 Westore - 组件、纯组件、插件开发
- android 62Android程序开发入门——组件生命周期之Broadcast receiver
- 看这一篇就够啦!微信小程序入门与实战,横扫常用组件API开发技巧(完整版包含全部源码)
- Tigase开发笔记4:Tigase Component组件开发
- 微信小程序日历组件开发
- Android程序开发入门——组件生命周期之Service
- 微信小程序开发 | 把玩系列:各种组件和API实用详解