网站首页 > 开源技术 正文
多选式按钮和单选式按钮有些类似,只不过是可以多选。在项目里我们也是经常遇到的。
准备工作:
- 创建一个页面: MultiChoice.vue
- 在router.js里配置MultiChoice页面的路由
{
path: '/multichoice',
name: 'multichoice',
component: () => import('./views/MultiChoice.vue')
}
- 在index.vue里添加一项
<a href="javascript:void(0)" @click="$router.push('/multichoice')">
<van-col span="6" class="marb20">
<van-icon name="pending-deliver" />
<div>MultiChoice</div>
</van-col>
</a>
至今为止呢,我们的首页显示的样式子是这样滴?不知道不觉间我们已经学完了20个组件了!哇噢,为自己欢呼一下吧!如果想看更多的内容,欢迎关注我,每天都有更新哈。
代码演示多选式按钮:
我们延用单先式按钮的布局:
<van-row>
<van-col span="6" style="margin: 10px auto;" v-for="(item,index) in movieType">
<van-button
:type="flag[index] ? 'primary' : 'normal'"
@click="onClick(index)"
>
{{ item }}
</van-button>
</van-col>
</van-row>
多选的话,肯定是一个数组,所以选重的checkedId会是一个数组,会将选中的index值push进去。还有一个flag值,代表着每个item的true或者false,也是一个数组。在这里,我们引入一个lodash库(不熟悉的小伙伴可以打开研究研究哈),方便我们去遍历以及删除等操作。
import _ from 'lodash'
export default {
data() {
return {
checkedId: [],
flag: [],
movieType: ['悲剧', '爱情', '动作', '枪战', '犯罪', '科幻']
}
},
methods: {
onClick(index) {
if(this.checkedId.indexOf(index) === -1) { //checkedId是否有index
this.checkedId.push(index)
this.$set(this.flag, index, true) //改变数组的值的方法
} else {
this.checkedId = _.remove(this.checkedId, (idx) => {
return idx !== index //返回删除后的数组
})
this.$set(this.flag, index, false)
}
},
这里需要特别说明的一点是,flag是一个数组,我们在改变其值时不能使用赋值的方式,需要用$set方法,否则效果会出不来。我再重温一下这个知识点,当我们在JS部分改变数组的值或者数组的长度时,都需要用$set方法。这是一个坑,经常会有小伙伴犯错哈。语法格式为:
this.$set(array, index, value)
今天就到这里啦。休息休息一会儿吧?明天继续加油噢!加油
猜你喜欢
- 2024-09-08 vue2组件系列第四十二节:NavBar 导航栏
- 2024-09-08 从零开始学Python——使用Selenium抓取动态网页数据
- 2024-09-08 黑客突破macOS的安全防御,新型恶意软件正在偷偷的窃取你的文件
- 2024-09-08 vue2组件系列第三十六节:Lazyload 图片懒加载
- 2024-09-08 Visa|实习面试|2022 暑假(visa issues)
- 2024-09-08 消息中间件RabbitMQ入门详解(消息中间件mq作用)
- 2024-09-08 vue2组件系列第二十二节:SwitchCell 开关单元格
- 2024-09-08 vue2组件系列第二十节:按钮式单选组件
- 2024-09-08 vue2组件系列第四十节:NoticeBar 通告栏
- 2024-09-08 vue2组件系列第二十六节:PasswordInput 密码输入框
欢迎 你 发表评论:
- 11-22qq空间权限破解器是真的吗(2021qq空间权限破解器安卓版)
- 11-22win10怎么隐藏桌面图标(w10怎样隐藏桌面图标)
- 11-22hp台式机怎么进入u盘启动项(hp台式机怎么设置u盘启动)
- 11-22破解别人空间访问权限(如何破解别人空间权限)
- 11-22安卓解压zarchiver免费版(安卓解压zarchiver使用教学)
- 11-22百度qq号申请注册(在百度上申请qq账号)
- 11-22dos是什么软件
- 11-22系统u盘启动盘(系统 u盘启动)
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)

本文暂时没有评论,来添加一个吧(●'◡'●)