小程序组件的使用(一) 创建组件

第一步:先创建components文件夹,放置整个项目的所有的组件。 第二步:在component文件夹中右键创建组件,名称为dialog。 接下来我们就需要对我们的弹出框组件进行设置了。

第三步:在dialog.wxml中写入弹出框代码:

<view wx:if="{{state}}" class='drop-bot' bindtap='closer'><view scroll-y="true" class="box {{first_click?'show':'hide'}} {{state?'open':'close'}}"><view style='height: 100%;' class="item_list"><scroll-view class='scroll' scroll-y="true" style='height: 275rpx'><view wx:for="{{account}}" wx:key="{{index}}" class=' li {{style}}' data-index="{{index}}" catchtap='select'>{{item.name}} </view></scroll-view><view class='li' catchtap='closer'>取消</view></view></view>
</view>

第四步:在dialog.wxss中写入样式代码:

/* 下拉框的实现 */
.drop-bot {width: 100%;height: 100%;position: fixed;bottom: 0;left: 0;background: rgba(0, 0, 0, .4);z-index: 1000;
}
.drop-bot .box{width: 100%;border-top: 1px solid #ddd;overflow: hidden;height: 0;animation-fill-mode: forwards;position: fixed;bottom: 0;left: 0;font-family: Monaco;">#fff;
}
.item_list .li.style {font-family: Monaco;">#f1f1f1;
}
.item_list .li{width: 100%;height: 90rpx;line-height: 90rpx;overflow: auto;white-space: nowrap;display: flex;justify-content: center;align-items: center;border-bottom: 1rpx solid #ebebeb;
}
@keyframes slidedown{from {height: 0;}to {height: 365rpx;}
}
@keyframes slideup{from {height: 365rpx;}to {height: 0;}
}
.open{animation: slidedown .5s;
}
.close{animation: slideup .5s;
}
.hide{display: none;
}
.show{display: block;
}

注:弹出框的出现是从底部划出所以实现思路是: 通过css3动画实现高度从0=》某一高度的变化,通过添加不同类名引用不同的动画,0-365为出现,365-0为消失,当然我们也可以通过定位,改变其top值也是可以的。

第五步:配置组件的业务逻辑:

// 弹出框组件
Component({
/**
* 组件的属性列表
*/
properties: {account: {type: Array,value: []},accountName: {type: String,value: ""}
},//存放公共数据的地方,可以供调用方传递数据/**
* 组件的初始数据
*/
data: {state: false,first_click: false,
},//私有属性的地方,data中的数据只有组件可以访问,外部无法访问/**
* 组件的方法列表
*/
methods: {closer: function (e) {this.setData({state: false,})},//点击遮罩层消失select: function (e) {var oIndex = e.currentTarget.dataset.index;var oAccount = this.data.account[oIndex].name;//这里需要的数据有调用方传递到propertiesthis.setData({state: false,})this.triggerEvent("action",oAccount);//将该方法抛出},//选择下拉的用户名称toggle: function () {var list_state = this.data.state,first_state = this.data.first_click;if (!first_state) {this.setData({first_click: true});}if (list_state) {this.setData({state: false});} else {this.setData({state: true});}},//调出弹出框事件
}//存放事件的地方
})

至此组件的配置也就结束了,下来我们需要进行调用方文件的配置:

第六步:配置index.wxml

<!-- 触发下拉事件的按钮 -->
<view class='header' bindtap="toggle"><text>{{accouontName}}</text><text>切换</text></view>
<!-- 组件:下拉弹出框 -->
<template-dialog id="dialog" account="{{account}}" accountName="{{accountName}}" bind:action="switchAccount"></template-dialog>

注: 给头部添加点击事件toggle(toggle为dialog组件内方法) 在需要调用的页面中添加摸板,摸板的标签就是我们在json中配置的template-dialog名称, 模板中id是在该页面中给调用的摸板起一个名称,用于在js中调用(只能用id) account和accountName是我们将index中的数据传输到组件中,以供事件的正常执行。 bind:action="selected"是调用组件抛出的方法

为什么说toggle和action同为组件的方法我们却只在这里生命action呢? 因为toggle虽是组件的方法,但我们只需要对他进行调用就可以,不需要进行任何的数据的传输,而action所代表的select事件则是需要我们在调用的时候进行 的数据的传输。

第七步:配置index.wxss:

.header {width: 100%;height: 90rpx;padding: 0 24rpx;box-sizing: border-box;font-family: Monaco; font-size: 11pt;">#16cc80;display: flex;justify-content: space-around;align-items: center;
}

第八步:配置index.json文件:

{"usingComponents": {"template-dialog": "/components/dialog/dialog"}
}

注: "template-dialog"是我们在调用摸板时给摸板所起的名称,后面为其路径

JS Page({ data: { accountName: "", account: [ { "name": "李小冉" }, { "name": "李冰" }, { "name": "李浩然" }, { "name": "李宗盛" }, ], }, onReady: function (e) { this.dialog = this.selectComponent("#dialog");//通过给组件所起的id调用组件 }, toggle: function (e) { this.dialog.toggle() }, //给头部添加的调出下拉框的事件 switchAccount: function (options) { this.setData({ accountName: options.detail }) }, //组件内部的方法将options传递过来的数据使用上 })

小程序组件的使用(一)创建组件相关推荐

  1. 微信小程序开发学习5(自定义组件)

    微信小程序开发学习5(自定义组件) 1.学习目标 能够知道如何自定义小程序组件 能够知道小程序组件中behaviors的作用 能够知道如何安装和配置vant-weapp组件库 能够知道如何使用MobX ...

  2. 微信小程序template模板与component自定义组件的区别和使用

    前言: 除了component,微信小程序中还有另一种组件化你的方式template模板,这两者之间的区别是,template主要是展示,方法则需要在调用的页面中定义.而component组件则有自己 ...

  3. 微信小程序 怎么插入图片?image组件的使用教程。

    这期我们来学学怎么在小程序中插入图片 1.image组件的简介 是小程序中一个图片的组件 image组件有一个默认宽度和高度(宽300px,高240px) 支持 JPG.PNG.SVG.WEBP.GI ...

  4. 微信小程序自定义canvas手写签名组件

    需求如下图展示,因为小程序中有好几个地方使用签名,所以做成组件. 1.创建组件 signature.js const app = getApp(); Component({/*** 组件的属性列表*/ ...

  5. 微信小程序网悦新闻开发--自定义组件开发(六)

    目录 微信小程序网悦新闻开发--功能介绍(一) 微信小程序网悦新闻开发--小程序配置(二) 微信小程序网悦新闻开发--首页模块开发(三) 微信小程序网悦新闻开发--视频模块开发(四) 微信小程序网悦新 ...

  6. 微信小程序图片全屏预览组件,并解决svg真机显示黑屏问题

    自己码了个微信小程序图片全屏预览组件,并解决了svg真机显示黑屏问题(即png等格式可以正常显示,但就svg无法显示). /*** 微信小程序图片预览组件* 1.支持预览svg.png.jpeg.jp ...

  7. 小程序内配置公众号关注组件

    official-account 基础库 2.3.0 开始支持,低版本需做兼容处理. 用户扫码打开小程序时,开发者可在小程序内配置公众号关注组件,方便用户快捷关注公众号,可嵌套在原生组件内. Tips ...

  8. 【微信小程序经验】各类图表相关组件+Demo源码(折线图,柱状图,K线,分时图)

    各类图表功能,小程序自带API并没有提供,所以很多人就用了其他方法来实现,我将这些实现方法和教程聚合一下,以便能够迅速而方便的使用: 相关文章: 在微信小程序中绘制图表(part1) 在微信小程序中绘 ...

  9. 微信小程序自定义select下拉选择组件

    微信小程序自定义select下拉选择组件 微信小程序原生开发中,常用到的是从底部弹起的滚动选择器(picker),而有些项目需要用到下拉选择,话不多说,下面就可以把下拉选择封装成一个自定义组件: 1. ...

  10. uni-app实现小程序沉浸式导航栏/顶部组件占满导航栏

    uni-app实现小程序沉浸式导航栏/顶部组件占满导航栏 如果你只是想单纯的让屏幕最上方的那个组件(比如swiper)将通知栏(导航栏)填充满,那么你只需要在page.json文件中加入以下代码到你想 ...

最新文章

  1. iPhone销售增长50%,净利润增长93%,但苹果股价还是跌了
  2. c++ mysql 取出数据,c++从数据库的表中读取数据
  3. java http 401_服务器返回HTTP响应代码:401,URL:https
  4. ViewState与Session 的重要区别
  5. 报错处理:sh: 1: Syntax error: “(“ unexpected
  6. Mysql Oracle 工具推荐
  7. go语言实现第一个程序-hello,world!
  8. wxWidgets:wxListItem类用法
  9. 解决vsftpd 读取目录列表失败的问题
  10. Cisco Packet Tracer思科模拟器路由器系统的备份与恢复
  11. 西门子PLC面向对象编程
  12. 20172328的结对编程四则运算第二周-整体总结
  13. supermap java,SuperMap iObjects Java 10i 产品介绍
  14. Win10系统下怎么开启管理员administrator权限?
  15. 最大似然估计log likelihood
  16. 《Java并发编程实战》【第一部分 基础知识】
  17. linux 打开相机工具cheese/guvcview
  18. 外地人如何在上海办准生证 或者 2016年准生证办理流程 不同版本
  19. 预防XSS,这几招管用!
  20. 51nod 1486

热门文章

  1. 所有的计算机语言都必须进行多进制运算,2018职称计算机考试巩固练习及答案17...
  2. HeadFirst设计模式之观察者模式学习
  3. server取出多个最小值 sql_SQL汇总查询及分组查询
  4. Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性
  5. hive 如何将数组转成字符串_hive 将hive表数据查询出来转为json对象和json数组输出...
  6. flask的janja模板
  7. numpy基础笔记02
  8. java的Random类
  9. Protobuf的优点
  10. oracle如何储存超长汉子_热水器该如何选择?!