微信小程序之自定义组件的实现代码(附源码)


Posted in Javascript onAugust 02, 2018

最近在项目开发中,遇到好多雷同的页面样式,就想着可以将常用的功能模块封装成组件,方便在项目中使用和修改,下面就参照微信小程序的文档分步骤写一个微信小程序的组件。

附上效果图:

微信小程序之自定义组件的实现代码(附源码)

step1:创建文件并申明

与创建微信小程序的页面一样,一个自定义组件也需要json,wxml,wxss,js四个文件。

在项目根目录中创建文件夹,取名为:component,在该目录下继续创建文件夹successModal。

可以在开发工具中右键创建,选择component,默认自动会创建四个文件。如图:

微信小程序之自定义组件的实现代码(附源码)

在successModal.json文件中进行自定义组件声明,如:

在开发工具中右键新建选择component,默认自动会创建。

{
 "component": true,
 "usingComponents": {}
}

step2:编写组件模板代码

<!-- 这是自定义组件的内部WXML结构 success.wxml-->
<view class='modal-section' wx:if="{{modalHidden}}">
 <view class='modal-opaci' bindtap='modal_click_Hidden'></view>
 <view class='modal-cont'>
 <icon type='{{modalIcon}}' size='70'></icon>
 <text class='modal-titleTxt {{modalIcon}}'>{{modalTitle}}</text>
 <text class='success-msg'>{{modalDesc}}</text>
 </view>
</view>

step3:编写样式文件

/* 这里的样式只应用于这个自定义组件 */
/*successModal.wxss*/
.modal-opaci {
 position: absolute;
 left: 0;
 top: 0;
 z-index: 100;
 height: 100%;
 width: 100%;
 background: black;
 opacity: 0.4;
 filter: alpha(opacity=40);
}
.modal-cont {
 position: fixed;
 top: 30%;
 left: 8.5%;
 z-index: 999;
 border-radius: 20rpx;
 padding: 40rpx 150rpx;
 background-color: #fff;
 text-align: center;
}
.modal-cont text {
 line-height: 90rpx;
 display: block;
}
.success {
 color: #09bb07;
}
.modal-titleTxt {
 font-size: 50rpx;
 font-weight: 700;
}
.warn {
 color: #f76260;
}

step4:编写业务逻辑

在自定义组件的 js 文件中,需要使用 Component() 来注册组件,组件的属性值和内部数据将被用于组件 wxml 的渲染,其中,属性值是可由组件外部传入的。

//successModal.js
Component({
 /**
 * 组件的属性列表
 */
 properties: {
 //这里定义了modalHidden属性,属性值可以在组件使用时指定.写法为modal-hidden 
 modalHidden: {
  type: Boolean,
  value: true
 },
 modalIcon: {
  type: String,
  value: ' ',
 },
 modalTitle: {
  type: String,
  value: ' ',
 },
 modalDesc: {
  type: String,
  value: ' ',
 }
 },

 /**
 * 组件的初始数据
 */
 data: {

 },

 /**
 * 组件的方法列表
 */
 methods: {
 // 这里是自定义方法
 modal_click_Hidden: function () {
  this.setData({
  modalHidden: false,
  })
 },
 }
})

step5:使用自定义组件

首先在需要使用的json文件中进行引用申明,然后需要提供每个自定义组件的标签名和对应的自定义组件文件路径。

//index.json
{
 "usingComponents": {
 "modal-success": "../../component/successModal/successModal" //在这里写上页面中自定义的标签名和自定义组件的文件路径
 },
 "navigationBarTitleText": "首页"
}

其次,在页面的wxml中使用自定义组件:在页面的 wxml 中就可以像使用基础组件一样使用自定义组件。节点名即自定义组件的标签名,节点属性即传递给组件的属性值。

<!--index.wxml-->
<view class="container">
 <view class="demoBtn" bindtap="bindViewTap">
 <text>点击</text>
 </view>
 <!-- 调用modal组件 -->
 <modal-success modal-hidden="{{is_modal_Hidden}}" modal-icon="{{is_modal_icon}}" modal-title="{{is_modal_title}}" modal-desc="{{is_modal_desc}}" />
</view>

以上就是小程序自定义组件的demo,欢迎start。

github地址:https://github.com/ywyan/wx-component

注意点:

  • 对于基础库的1.5.x版本, 1.5.7 也有部分自定义组件支持。
  • 因为WXML节点标签名只能是小写字母、中划线和下划线的组合,所以自定义组件的标签名也只能包含这些字符。
  • 自定义组件也是可以引用自定义组件的,引用方法类似于页面引用自定义组件的方式(使用 usingComponents 字段)。
  • 自定义组件和使用自定义组件的页面所在项目根目录名不能以“wx-”为前缀,否则会报错。
  • 旧版本的基础库不支持自定义组件,此时,引用自定义组件的节点会变为默认的空节点。

总结

以上所述是小编给大家介绍的微信小程序之自定义组件的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript入门·对象属性方法大总结
Oct 01 Javascript
javascript form 验证函数 弹出对话框形式
Jun 23 Javascript
用JavaScript修改CSS属性的代码
May 06 Javascript
jquery实现鼠标拖动图片效果示例代码
Jan 09 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
Apr 06 Javascript
jquery获取复选框checkbox的值的简单实现方法
May 26 Javascript
跨域请求的完美解决方法(JSONP, CORS)
Jun 12 Javascript
AngularJS  自定义指令详解及实例代码
Sep 14 Javascript
Bootstrap 填充Json数据的实例代码
Jan 11 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
Jul 20 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
javascript实现拖拽碰撞检测
Mar 12 Javascript
Array数组对象中的forEach、map、filter及reduce详析
Aug 02 #Javascript
利用Blob进行文件上传的完整步骤
Aug 02 #Javascript
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 #Javascript
vue组件横向树实现代码
Aug 02 #Javascript
利用Node.js批量抓取高清妹子图片实例教程
Aug 02 #Javascript
在微信小程序里使用watch和computed的方法
Aug 02 #Javascript
在小程序中使用Echart图表的示例代码
Aug 02 #Javascript
You might like
php skymvc 一款轻量、简单的php
2011/06/28 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
js代码实现微博导航栏
2015/07/30 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
Python实现聊天机器人的示例代码
2018/07/09 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
python调用百度语音识别api
2018/08/30 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
办公室秘书自我鉴定
2014/01/18 职场文书
禁毒宣传标语
2014/06/19 职场文书
2014年班级工作总结
2014/11/14 职场文书
2014年残联工作总结
2014/11/21 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers
Django框架之路由用法
2022/06/10 Python