700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 微信小程序—自定义(城市选择)弹窗组件 将弹窗组件的值传给调用页面并显示(图文)

微信小程序—自定义(城市选择)弹窗组件 将弹窗组件的值传给调用页面并显示(图文)

时间:2022-04-27 05:06:30

相关推荐

微信小程序—自定义(城市选择)弹窗组件 将弹窗组件的值传给调用页面并显示(图文)

微信小程序—自定义(城市选择)弹窗组件,并传值

1、新建component文件夹用来存放自定义组件,并在其文件夹内新建cityModal Component,注意不是新建Page

新建完成之后出现四个和Page一样后缀的文件,只是里面的内容不一样而已

2、cityModal.wxml(可直接粘贴)

<view class="cityModal" wx:if="{{cityModalShow}}" ><!-- 城市选框 --><view class="cities"><view class="title">选择城市</view><view class="cityName"><block wx:key="{{index}}" wx:for="{{cities}}"><text class="cityItem"bindtap="getCity" data-text='{{item}}>{{item}}</text></block></view></view><!-- 关闭按钮 --><view class="closeBtn" bindtap="hideCityModal">x</view></view>

3、cityModal.wxss(可直接粘贴)

.cityModal{width: 100%;height: 100%;background: rgba(0, 0, 0, 0.5);position: fixed;top: 0;left: 0;z-index: 999;}.cityModal .cities{width: 578rpx;height: 500rpx;background: #fff;border-radius: 12rpx;color: #2d2d2d;margin: 25% auto;margin-bottom: 0;}.cityModal .cities .title{font-size: 30rpx;text-align: center;padding: 30rpx;}.cityModal .cities .cityName{font-size: 28rpx;display: flex;flex-wrap: wrap;}.cityModal .cities .cityName .cityItem{text-align: center;width: 189rpx;height: 77rpx;}.cityModal .closeBtn{width: 72rpx;height: 72rpx;line-height: 64rpx;text-align: center;color: #fff;background: #949494;border: 6rpx solid #fff;border-radius: 50%;font-size: 70rpx;margin: 60rpx auto;}

4、cityModal.js(和vue很类似)

data: {// 页面布局循环的的城市数组 cities: ['上海', '常州', '苏州', '杭州', '宁波', '无锡', '南京', '北京', '天津', '绍兴', '重庆', '成都', '台州', '嘉兴'],// 城市模态框的显示和隐藏cityModalShow: false},methods: {// 点击城市出现选择城市模态框showCityModal: function () {this.setData({ cityModalShow: true })},// 点击遮盖层选择城市模态框消失hideCityModal: function () {this.setData({ cityModalShow: false })},// 获取点击的城市getCity: function (e) { this.setData({ cityModalShow: false })// 在第5步中绑定的事件,第一个参数是事件名,第二个参数是获取的text的值,// 如何获取text的值请[参考](/Poppy_LYT/article/details/100022893)this.triggerEvent('myevent', e.currentTarget.dataset.text);}}

4、打开你要引用这个cityModal组件的页面

我是在home页面写的

home.json

"usingComponents": {// 注意:这里不需要../../去找这个组件的路径,直接这样写即可// cityModal这个名字是自己起的组件名字,在home.wxml里引入"cityModal": "/component/cityModal/cityModal"},

5、home.wxml

在home页面引入组件,你在usingComponents里面定义的是啥名字就在这儿写啥名字

// 这个是点击城市定位的按钮,需要弹出组件,这里绑定一个事件showCityModal(随便起的)<view class="city" bindtap="showCityModal"><text class="citytext">{{city}}</text> // 这个city在data里定义过了,起始值是北京</view><!-- 引入选择城市弹窗组件 -->// 给这个组件绑定一个myevent事件,给这个页面绑定一个onMyEvent事件<cityModal id="cityModal" bind:myevent="onMyEvent"></cityModal>

6、home.js

data: {city: '北京' // 城市的起始值,后面需要用来切换选择的城市}onReady: function () {// 获取到这个组件 括号内的名字就是你第5步在home.wxml里引入组件的时候给的id// this.cityModal这个名字也是自定义的this.cityModal = this.selectComponent("#cityModal");},// 点击城市出现选择城市模态框// 第一个showCityModal是第5步在home.js里绑定的// 方法内的showCityModal是调用的组件里的方法// 这里的this.cityModal就是你在onReady里获取到的这个组件showCityModal: function () {this.cityModal.showCityModal();},// 传值,在第5步绑定的 // 将用于显示选择城市的变量city设置成组件传递过来的值// 组件的值是请看第3步onMyEvent: function (e) {this.setData({city: e.detail})},

点击查看效果:

点击北京这个按钮,弹出组件

点击组件中的常州,页面的城市更换成常州

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。