遇到一个vue的问题,不知道是什么原因,有谁能解答下?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <style>
        .demo{
            display: flex;
        }
        li{
            width: 30px;
            height: 30px;
            border: 1px solid #ddd;
            list-style: none;
        }
        .active{
            background: #f60;
        }
    </style>
</head>
<body>
    <div class="demo">
        <ul><li v-for="(col,x) in cols" @click="alert(x)" :class="position[0]===x?'active':''"></li></ul> 
        <!--<ul><li v-for="(col,x) in cols" @click="alert(x)" :class="positionX===x?'active':''"></li></ul>-->
        <button @click="inc()">+1</button>
    </div>
    
    <script>
        new Vue({
            el:'.demo',
            data(){
                return{
                    cols:[1,2,3,4,5,6,7,8,9,10],
                    position:[0],
                    positionX:0
                }
            },
            methods:{
                inc(){
                    this.position[0]++
                    this.positionX++
                },
                alert(x){
                    console.log(this.position[0]===x)//第一段ul中li样式不动,但当点击下一个li时,输出是true
                    console.log(this.positionX===x)//第二段ul中li样式动,点击输出是true
                }
            }
        })
    </script>
</body>
</html>

图片描述

这里写了两段代码,按+1按钮的时候橘色应该会往下跑。
但是实际上只有被注释的那段代码能运行,这是什么问题导致的?

阅读 1.9k
1 个回答

inc()方法中修改如下:
this.$set(this.position, 0, (this.position[0] + 1))

原因是数组未更新导致,请查看vue相关文档:https://cn.vuejs.org/v2/guide...

推荐问题