vue绑定样式不起作用

在项目开发时碰到了一个问题,就是在v-for结构里使用样式绑定,绑定的值取决于在created或者mounted里面更新的数据的值,但完全不起作用,而自己仿照结构写的测试又可以,确认了不是样式方面的问题。
测试案例如下:

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .moren {
            width: 200px;
            height: 200px;
        }

        .clicked {
            background: pink;
        }

        .noclicked {
            background: blue;
        }
    </style>

</head>

<body>
    <!-- :class="[{moren: true}, { isclicked: item.clickFlag }, {noclicked: true}]" -->
    <!-- :class="{isclicked: item.clickFlag}" -->
    <!-- :class="{isclicked: item.clickFlag}" -->
    <!-- :style="item.color" -->
    <div id=root>
        <div v-for='(item) in newArr' 
        @click="clickDiv(item)" 
        class="moren" :class="item.style">
            {{item.name}} 
        </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        var vm = new Vue({
            el: '#root',
            data: {
                newArr: []
            },
            methods: {
                clickDiv(item) {
                    console.log(item.clickFlag);
                    
                    item.clickFlag = !item.clickFlag? true: false;
                    item.style = item.clickFlag? 'clicked':'noclicked';
                    // var newItem = item;
                    // item.name = 'Ryuko';
                    // this.newArr.splice(index, 1, newItem);
                    // // this.clickFlag[index] = !this.clickFlag[index]? true: false;
                    // console.log(this.newArr);
                    // this.newArr[index].style = this.newArr[index].clickFlag? 'clicked':'noclicked';
                }
            },
            created() {
                this.newArr = [{
                    name: 'xxx',
                    clickFlag: false,
                    style: 'noclicked'
                }, {
                    name: 'yyy',
                    clickFlag: false,
                    style: 'noclicked'
                }];
            }

        })
    </script>
</body>

</html>

后面一检查发现update根本没被触发,即使我使用了this.$set()和数组的splice方法。

最终解决方案:使用强制更新this.$forceUpdate() 成功解决,看网上说出现这种情况的原因,是数据的层级太深。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容