vue初试 标签页点击(多选/反选)高亮

本文介绍了如何使用Vue.js实现标签页的点击高亮效果,并支持多选和反选功能。通过v-for指令遍历标签,利用:class绑定样式实现高亮,并通过$set方法更新数据,确保数据响应式。示例代码中展示了template和js部分的实现细节,包括checkedTags对象的使用,以及Vue中动态添加响应式属性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


效果类似于点击选择标签 首次点击高亮再点击取消 可多选 ;

上代码 templete部分:

 <ol>
          <li v-for="n in 6" :class='{tagActive: checkedTags[n-1]}' v-on:click="changeActive(n-1)">{{tags[n-1]}}</li>
        </ol>

js部分

data(){

 return {
          tripInfo: this.$store.state.trip.tripInfo || null,
        tags: ['', '', '', '', '', ''],
        rate: 4,
        checkedTags: {}

},

methods:{

changeActive (n) {
        this.$set(this.checkedTags, n, !this.checkedTags[n])
      }

}


牵扯到$set的用法  找到的文献,直接拷过来 恩 要让前辈的努力继承下去

受ES5的显示,Vuejs不能检测到对象属性的添加或删除。因为Vuejs在初始化时候将属性转化为getter/setter,所以属性必须在data对象才能让Vuejs转换它,才能让它是响应的,例如:

var data = { a: 1 }
var vm = new Vue({
  data: data
})
// `vm.a` 和 `data.a` 现在是响应的
 
vm.b = 2
// `vm.b` 不是响应的
 
data.b = 2
// `data.b` 不是响应的

不过,有办法在实例创建之后添加属性并且让它是响应的。对于Vue实例,可以使用$set(key,value)实例方法:

vm.$set('b', 2)
// `vm.b` 和 `data.b` 现在是响应的

对于普通数据对象,可以使用全局方法Vue.set(object, key, value):

Vue.set(data, 'c', 3)
// `vm.c` 和 `data.c` 现在是响应的

有时你想向已有对象上添加一些属性,例如使用 Object.assign() 或 _.extend() 添加属性。但是,添加到对象上的新属性不会触发更新。这时可以创建一个新的对象,包含原对象的属性和新的属性:

// 不使用 `Object.assign(this.someObject, { a: 1, b: 2 })`
this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })

	这里记住Vue.set(object, key, value):  第一个参数是对象  所以在js部分 data里  “checkedTags: {}!!!”
	  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值