vue如何切换样式?

比如
有三个按钮

button1.current button2.current button3.current

默认高亮button1,点击之后切换

在data写了个数组 [true, false, false]

click的method里传个index,@click="a(index)" button是循环出来的

用传入index来进行数组切换,this.array[index] = true

重新赋值后,dom没更新...

阅读 9.9k
3 个回答

直接上代码看效果吧。
https://jsfiddle.net/zhoou/d6...

*{ margin:0; padding:0; }
ul,li,ol{ list-style: none; }
.on{ color: red; }
<div class="el">
    <ul class="menu">
        <li v-for='item in menu' v-bind:class="{'on':flag==$index}" v-on:click='light($index)'>{{item.name}}</li>
    </ul>
</div>
var app=new Vue({
    el:'.el',
    data:{
        menu:[
            {'name':'语文'},
            {'name':'数学'},
            {'name':'自然'},
            {'name':'社会'},
            {'name':'和谐'}
        ],
        flag:0
    },
    methods:{
        light:function(index){
            this.flag=index;
        }
    }
});

效果:
图片描述

新手上路,请多包涵

vue的官方文档里面,for循环是可以带俩个参数的,你可以带上当前点击对象的index,传入点击事件,点击事件会修改nowindex , 计算属性计算当前的index和data里面的nowIndex是不是相同,如是相同就是会改变样式,否则就会选择渲染被动的样式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题