美文网首页
Vue动态添加data属性视图层不更新解决

Vue动态添加data属性视图层不更新解决

作者: Enginner_XZ | 来源:发表于2020-11-21 01:31 被阅读0次

    有些场景需要动态添加数据属性

    • html代码
    <div id="app">
            <ul>
                <li v-for="( item , key , index ) in data " :key="key" v-bind:class="{'active' : item.flag}">
                    <span v-on:[event]="handleClick(key)">{{item.text}} , {{item.flag}}</span>
                </li>
            </ul>
        </div>
    
    • css
            .active {
                background: red;
                color: pink
            }
    
    • Vue
        Vue.component('todo-item', {
            template: '#temp',
        })
    
        const app = new Vue({
            el: '#app',
            data: {
                data: {
                    d1: {
                        text: '数据1',
                    },
                    d2: {
                        text: '数据2'
                    },
                },
                event: 'click'
            },
            created() {
            },
            methods: {
                handleClick(index) {
                    Object.keys(this.data).forEach((key) => {
                        this.$set(this.data[key], 'flag' , false); // Vue.$set(要被新增的对象 ,'属性名' , 属性值 );
                        // this.data[key].flag = false;
                    }),
                        this.data[index].flag = true;
                        console.log('click', this.data);
        }
            },
            watch: {
            }
         })
    

    PS : 通过正常的点语法等方法添加的属性无法让Vue监视到新增属性 ,导致数据层数据改变 , 视图层get不到数据 ,通过使用Vue提供的$set方法来添加新的属性

    相关文章

      网友评论

          本文标题:Vue动态添加data属性视图层不更新解决

          本文链接:https://www.haomeiwen.com/subject/jqksiktx.html