本文为大家分享了微信小程序实现tabs选项卡功能的具体代码,供大家参考,具体内容如下
一个自定义组件由 json wxml wxss js 4个文件组成。要编写一个自定义组件,首先需要在 json 文件中进行自定义组件声明(将 component 字段设为 true 可这一组文件设为自定义组件)
components/navigator/index.json
{
"component": true
}
components/navigator/index.wxml
<!-- 自定义tab标签组件-->
<!-- 标题列表-->
<scroll-view scroll-x="true" class="scroll-view-x" wx:if="{{!ttype || ttype==2}}">
<view class="scroll-view-item" wx:for="{{tList}}" wx:key="*this">
<view class="{{currentTab==(index) " bindtap="_swichNav" data-current="{{index}}">{{ !tname "htmlcode">
//组件的对外属性,是属性名到属性设置的映射表,属性设置中可包含三个字段, type 表示属性类型、 value 表示属性初始值、 observer 表示属性值被更改时的响应函数
Component({
properties:{
//标题列表
tList:{
type: Array,
value:[]
},
//当前tab index
currentTab:{
type:Number,
value:0,
observer: function (newVal, oldVal) {
this.setData({
currentTab : newVal
})
}
}
},
//组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用
methods:{
// 内部方法建议以下划线开头
_swichNav:function(e){
//自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项
this.triggerEvent('changeCurrent', {
currentNum: e.currentTarget.dataset.current
})
}
}
})
components/navigator/index.wxss
.scroll-view-x{
background-color: #fff;
white-space: nowrap;
position:fixed;
z-index:10;
top:0
}
.scroll-view-x .scroll-view-item{
display:inline-block;
margin:0 35rpx;
line-height: 33px;
cursor: pointer;
}
.on{
border-bottom: 2px solid red;
color: red
}
使用自定义组件
使用已注册的自定义组件前,首先要在页面的 json 文件中进行引用声明。此时需要提供每个自定义组件的标签名和对应的自定义组件文件路径:
pages/order-list/index.json
{
"navigationBarTitleText":"订单列表",
"usingComponents": {
"slideTab": "../../components/navigator/index"
}
}
这样,在页面的 wxml 中就可以像使用基础组件一样使用自定义组件。节点名即自定义组件的标签名,节点属性即传递给组件的属性值。
pages/order-list/index.wxml
<view >
<slideTab tList="{{statusType}}" bind:changeCurrent="swichNav" currentTab="{{currentType}}" >
<swiper current="{{currentType}}" duration="300" bindchange="bindChange" style="height: {{windowHeight-35}}px;margin-top:35px;">
<block>
<swiper-item wx:for="{{list}}">
<view class="no-order" hidden="{{item.length ">
<image src="/UploadFiles/2021-04-02/no-order.png">
pages/order-list/index.js
var wxpay = require('../../utils/pay.js')
var app = getApp();
Page({
data:{
statusType:[
{name:"待付款",page:0},
{name:"待发货",page:0},
{name:"待收货",page:0},
{name:"待评价",page:0},
{name:"已完成",page:0}],
currentType:0,
list:[[],[],[],[],[]],
goodsMap:[{},{},{},{},{}],
logisticsMap:[{},{},{},{},{}],
windowHeight:''
},
onLoad(options){
this.getList();
var systemInfo = wx.getSystemInfoSync()
this.setData({
windowHeight: systemInfo.windowHeight,
currentType:options.id "list[" + that.data.currentType + "]", str2 = 'statusType[' + that.data.currentType + '].page', str3 = "logisticsMap[" + that.data.currentType + "]", str4 = "goodsMap[" + that.data.currentType + "]" ;
if (res.data.code == 0) {
param[str1] = res.data.data.orderList ;
param[str2] = _page ;
param[str3] = res.data.data.logisticsMap ;
param[str4] = res.data.data.goodsMap ;
that.setData(param);
} else {
param[str1] = [];
param[str3]= {};
param[str4] = {};
this.setData(param);
}
}
})
},
orderDetail: function (e) {
var orderId = e.currentTarget.dataset.id;
wx.navigateTo({
url: "/pages/order-details/index" + orderId
})
},
cancelOrderTap: function (e) {
var that = this;
var orderId = e.currentTarget.dataset.id;
wx.showModal({
title: '确定要取消该订单吗?',
content: '',
success: function (res) {
if (res.confirm) {
wx.showLoading();
wx.request({
url: app.globalData.baseUrl + '/order/close',
data: {
token: app.globalData.token,
orderId: orderId
},
success: (res) => {
wx.hideLoading();
if (res.data.code == 0) {
var param = {}, str = 'statusType[' + that.data.currentType + '].page';
param[str]=0;
that.getList();
}
}
})
}
}
})
}
})
pages/order-list/index.wxss
.container{
width: 100%;
background-color: #F2f2f2;
}
.status-box{
width:100%;
height: 88rpx;
line-height: 88rpx;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #fff;
}
.status-box .status-label{
width: 150rpx;
height: 100%;
text-align: center;
font-size:28rpx;
color:#353535;
box-sizing: border-box;
position: relative;
}
.status-box .status-label.active{
color:#e64340;
border-bottom: 6rpx solid #e64340;
}
.status-box .status-label .red-dot{
width: 16rpx;
height: 16rpx;
position: absolute;
left: 116rpx;
top:23rpx;
background-color: #f43530;
border-radius: 50%;
}
.no-order{
width: 100%;
position: absolute;
bottom: 0;
top:0;
left: 0;
right: 0;
text-align: center;
padding-top: 203rpx;
background-color: #F2f2f2;
}
.no-order-img{
width: 81rpx;
height: 96rpx;
margin-bottom: 31rpx;
}
.no-order .text{
font-size:28rpx;
color:#999999;
text-align: center
}
.order-list{
width: 100%;
}
.order-list .a-order{
width: 100%;
background-color: #fff;
margin-top: 20rpx;
}
.order-list .a-order .order-date{
padding: 0 30rpx;
height: 88rpx;
display: flex;
justify-content: space-between;
font-size:26rpx;
color:#000000;
align-items: center;
}
.order-list .a-order .order-date .red{
font-size:26rpx;
color:#e64340;
}
.a-order .goods-info,
.goods-img-container{
width: 720rpx;
margin-left: 30rpx;
border-top: 1rpx solid #eee;
border-bottom: 1rpx solid #eee;
padding: 30rpx 0;
display: flex;
align-items: center;
}
.goods-info .img-box{
width: 120rpx;
height: 120rpx;
overflow: hidden;
margin-right: 30rpx;
background-color: #f7f7f7;
}
.goods-info .img-box .goods-img,
.goods-img-container .img-box .goods-img{
width: 120rpx;
height: 120rpx;
}
.goods-info .goods-des{
width: 540rpx;
height: 78rpx;
line-height: 39rpx;
font-size:26rpx;
color:#000000;
overflow: hidden;
}
.goods-img-container{
height: 180rpx;
box-sizing: border-box;
white-space: nowrap;
}
.goods-img-container .img-box{
width: 120rpx;
height: 120rpx;
overflow: hidden;
margin-right: 20rpx;
background-color: #f7f7f7;
display: inline-block;
}
.order-list .a-order .price-box{
position: relative;
width: 720rpx;
height: 100rpx;
margin-left: 30rpx;
box-sizing: border-box;
padding: 20rpx 30rpx 20rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
font-size:26rpx;
}
.order-list .a-order .price-box .total-price{
font-size:26rpx;
color:#e64340;
}
.a-order .price-box .btn{
width: 166rpx;
height: 60rpx;
box-sizing: border-box;
text-align: center;
line-height: 60rpx;
border-radius: 6rpx;
margin-left: 20rpx;
}
.a-order .price-box .cancel-btn{
border: 1rpx solid #ccc;
position: absolute;
right: 216rpx;
top:20rpx;
}
.a-order .price-box .topay-btn{
border:1px solid #e64340;
color: #e64340;
}
效果图
项目地址:微信小程序实现tabs选项卡功能
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]
