原生微信小程序使用class 三元运算符实现多选案例

如下图所示:

1,在vue中开发非常容易实现,使用数组的includes方法判断即可,但是在原生小程序中不可以
2,要及时的对定义的遍历进行setData,重新赋值

本案例的重点js和html代码如下:

 <view  wx:for="{{xueliArr}}" class="{{ xueliArrObj[index].flag  ?'base-item px_act':'base-item'}}" wx:key='item.id' bindtap="xueliChange"data-id="{{item.id}}"data-index="{{index}}"id="{{'xueli'+index}}">{{item.cate_name}}</view>// res是从接口返回的数据let xueliArr = res.data.data.xueli.listif(xueliArr && xueliArr.length > 0){xueliArr.forEach(item =>{this.data.xueliArrObj.push({flag:false})})this.setData({xueliArrObj: this.data.xueliArrObj})}xueliChange:function(e){let index = e.currentTarget.dataset.indexif(this.data.xueliSelArr.includes(e.currentTarget.dataset.id)){let index = this.data.xueliSelArr.findIndex(item =>{return item == e.currentTarget.dataset.id})this.data.xueliSelArr.splice(index,1) // 删除元素}else{this.data.xueliSelArr.push(e.currentTarget.dataset.id)}this.data.xueliArrObj[index].flag = !this.data.xueliArrObj[index].flagthis.setData({xueliArrObj: this.data.xueliArrObj})},

完整的wxml文件如下

<!--packageA/pages/index/select.wxml-->
<view class="select-main"><view>期望城市  :郑州</view><view><view class="xue-title">学历要求</view><view class="flex-block"><view  wx:for="{{xueliArr}}" class="{{ xueliArrObj[index].flag  ?'base-item px_act':'base-item'}}" wx:key='item.id' bindtap="xueliChange"data-id="{{item.id}}"data-index="{{index}}"id="{{'xueli'+index}}">{{item.cate_name}}</view></view><view class="xue-title">薪资范围</view><view class="flex-block"><view  wx:for="{{salarys}}" class="{{xztab==index?'base-item px_act':'base-item'}}" wx:key='item' bindtap="salaryChange"data-id="{{index}}" id="{{index}}">{{item}}</view></view><view class="xue-title">行业分类</view><view class="flex-block"><view  wx:for="{{hangyeArr}}" class="{{xztab==index?'base-item px_act':'base-item'}}" wx:key='item.id' >{{item.cate_name}}</view></view><view class="xue-title">企业规模</view><view class="flex-block"><view  wx:for="{{qyguimoArr}}" class="{{xztab==index?'base-item px_act':'base-item'}}" wx:key='item.id' >{{item.cate_name}}</view></view><view class="btn-la"><text class="btn-bs btn-sure">确定</text><text class="btn-bs btn-reset" >重置</text></view></view></view>

完整的js代码如下


// packageA/pages/index/select.jsconst app = getApp()
const util = require('../../../utils/util.js')
const api = require('../../../utils/api.js')Page({/*** 页面的初始数据*/data: {salarys: ['全部', '面议', '1500以下', '1500-2999', '3000-3999', '4000-5999', '6000-7999', '8000-9999', '10000-14999', '15000-19999', '20000以上'],salarybase: [{ "cate_name": '全部', "cate_ceil": '0', "cate_floor": '0' },{ "cate_name": '面议', "cate_ceil": '-1', "cate_floor": '-1' },{ "cate_name": '1500以下', "cate_ceil": '1500', "cate_floor": '0' },{ "cate_name": '1500-2999', "cate_ceil": '2999', "cate_floor": '1500' },{ "cate_name": '3000-3999', "cate_ceil": '3999', "cate_floor": '3000' },{ "cate_name": '4000-5999', "cate_ceil": '5999', "cate_floor": '4000' },{ "cate_name": '6000-7999', "cate_ceil": '7999', "cate_floor": '6000' },{ "cate_name": '8000-9999', "cate_ceil": '9999', "cate_floor": '8000' },{ "cate_name": '10000-14999', "cate_ceil": '14999', "cate_floor": '10000' },{ "cate_name": '15000-19999', "cate_ceil": '19999', "cate_floor": '15000' },{ "cate_name": '20000以上', "cate_ceil": '0', "cate_floor": '20000' },],xztab: 0,floor: '',ceil: '',qzfx_i: 1,xueliSelArr:[],//学历xueliArrObj:[],},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {util.request(api.getDcData, { "type": 'xueli,hangye,qyguimo' }, this.dcDataFn)},dcDataFn: function(res) {console.log("res==",res)console.log("res.data.data.hangye===",res.data.data.hangye)let xueliArr = res.data.data.xueli.listif(xueliArr && xueliArr.length > 0){xueliArr.forEach(item =>{this.data.xueliArrObj.push({flag:false})})this.setData({xueliArrObj: this.data.xueliArrObj})}this.setData({hangyeArr:res.data.data.hangye.list,xueliArr:xueliArr,qyguimoArr:res.data.data.qyguimo.list});},//点击学历xueliChange:function(e){let index = e.currentTarget.dataset.indexif(this.data.xueliSelArr.includes(e.currentTarget.dataset.id)){let index = this.data.xueliSelArr.findIndex(item =>{return item == e.currentTarget.dataset.id})this.data.xueliSelArr.splice(index,1) // 删除元素}else{this.data.xueliSelArr.push(e.currentTarget.dataset.id)}this.data.xueliArrObj[index].flag = !this.data.xueliArrObj[index].flagthis.setData({xueliArrObj: this.data.xueliArrObj})},salaryChange: function (e) {console.log(e.currentTarget.dataset.id)if (this.data.qzfx_i == 1) {this.data.floor = this.data.salarybase[e.currentTarget.dataset.id].cate_floor;this.data.ceil = this.data.salarybase[e.currentTarget.dataset.id].cate_ceil;} else {this.data.floor = this.data.salarybasesx[e.currentTarget.dataset.id].cate_floor;this.data.ceil = this.data.salarybasesx[e.currentTarget.dataset.id].cate_ceil;}this.setData({xztab: e.currentTarget.dataset.id})},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})

原生微信小程序使用class 三元运算符实现多选案例相关推荐

  1. 微信小程序 中使用三元运算符

    wxml <van-cell-group><van-cell title="昵称" value="{{userInfo.nickName}}" ...

  2. mpvue 微信小程序api_第三方框架与原生微信小程序开发框架性能之比较 | Q荐读...

    作者 | 崔红保编辑 | 王莹 自 2017年1月9日微信小程序诞生以来,历经 2 年多的迭代升级,已有数百万小程序上线,成为继 Web.iOS.Android 之后,第四大主流开发技术. 与之相随, ...

  3. 【微信小程序】---- redux 在原生微信小程序的使用实例

    weapp-redux 下载 weapp-redux 使用实例下载 预览 开发 1. 目标 学会 redux 在原生微信小程序的使用: 学习和思考微信小程序中封装 Provider: 2. 引入 re ...

  4. 原生微信小程序购物车

    原生微信小程序购物车!! 效果: html: <view style="background-color: #eeeeee;height: 100vh;"><vi ...

  5. 原生微信小程序项目基础框架搭建

    原生微信小程序项目基础框架搭建 文件目录结构 1. 环境变量(开发环境, 线上环境,测试环境)便于在不同环境的切换 接口的url webview的前缀url 埋点相关的环境参数 本地存储的环境变量配置 ...

  6. 原生微信小程序,scroll-view的使用,一屏两个滚动区域,scroll-y(纵向滚动)

    原生微信小程序,scroll-view的使用,一屏两个滚动区域,scroll-y(纵向滚动) 这个会简单很多 结构层 <view class="container">& ...

  7. 蚂蚁分类信息系统原生微信小程序百度小程序

    蚂蚁分类信息系统原生微信小程序百度小程序,系统采用uniapp开发,小程序接口独立开发,兼容蚂蚁分类信息系统数据库.支持微信支付,百度支付

  8. 基于原生微信小程序的时间组件

    作者的絮叨 在开发原生微信小程序的时候,发现很少有基于原生微信小程序开发的相关插件或组件,不知道是不是我的孤陋寡闻,还是真的很少,暂且不管~下面我介绍一下我当时开发的一个时间组件,比较简陋,希望可以给 ...

  9. 原生微信小程序,搜索框(search)组件

    原生微信小程序,搜索框(search)组件 首先创建组件及两个跳转页面,第一个是搜索框所在的页面(首页),第二个是搜索详细页 搜索框的本质是:搜索框不是input,而是navigate,跳转到专门的搜 ...

最新文章

  1. mysql设计经纬度表_MySQL经纬度表设置
  2. 面试问到java并发_那些面试官必问的JAVA多线程和并发面试题及回答
  3. prim算法求最小生成树_克鲁斯卡尔算法(Kruskal算法)求最小生成树
  4. 解决苹果os 10.9 和 parallels desktop 8 兼容问题
  5. ajaxutil java,Ajax的工具类AjaxUtils,使用struts返回Json类型
  6. mysql慢查询的使用_mysql慢查询使用详解
  7. ETL工具学习以及安装部署
  8. [转载] Python编程之np.argmax()的用法
  9. Oracle 11g服务器安装详细步骤——图文教程
  10. 基于SSM校园一卡通管理系统
  11. C语言图形库函数easyx下载
  12. 浩辰3D设计软件中如何进行弹簧设计?
  13. 山东交通学院c语言程序设计,山东交通学院 c语言题库.doc
  14. Java 案例七 超市管理系统(商品清单,商品添加,商品删除,修改库存)
  15. 制作WIN7+XP+DOS+PE多系统启动光盘
  16. 做人要知足、做事要知不足、做学问要不知足
  17. java动漫网站开题报告_动漫影响及其研究开题报告
  18. 实现同网段不同vlan通信有几种方式?纯二层网络下又是如何实现的?
  19. Leetcode 1087. Brace Expansion
  20. 什么是uni-app?

热门文章

  1. 数分下第4讲 (8.2节): 平面和直线
  2. 周易六十四卦——比卦
  3. java自定义窗口,java 自定义窗口
  4. 百度地图获取数据库点的坐标,并定时刷新到页面上 jsp
  5. ES冷热分离架构设计:一招让你的ELK日志系统节省 50% 的硬盘成本
  6. mapengpeng1999@163.com 数据库的设计
  7. java SpringBoot 对接支付宝 APP支付 证书模式及非证书模式
  8. houdni 联机渲染解算 hqueue 和deadline问题笔记
  9. 【华为OD机试真题 JS】出错的或电路
  10. 中科院计算机博士论文致谢火了!网友:读完已是泪流满面……