javascript - vue created里新添加的属性,视图不会更新

查看:77
本文介绍了javascript - vue created里新添加的属性,视图不会更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

li元素的marginTop没有变化,而如果改变的是name,li元素一直变化,
为什么noticeDatad在created里新添加的属性无效呢?

<ul v-for="(item,index) in noticeData">
    <li :style="{marginTop: item.marginTop + 'px'}">{{ item.name }}</li>
</ul>
 
new Vue({
    el: '#app',
    data: {
        noticeData: [{
            id: 1,
            name: '国庆大促销!全场5折'
        }, {
            id: 2,
            name: '国庆大促销!全场8折'
        }, {
            id: 3,
            name:' 国庆大促销!全场20折'
        }],
    },
    created: function() {
        var self = this;
        self.noticeData.forEach(function(item){
            item.marginTop = 0;
        });
        self.$nextTick(function(){
            var i = 0;
            setInterval(function(){
                i += 2;
                self.noticeData[0].marginTop = -i;
                //self.noticeData[0].name= -i;
            },1000);
        });
    }
})

解决方案

是因为这段代码的问题

self.noticeData.forEach(function(item){
            item.marginTop = 0;
});

换成这样既可

self.noticeData.forEach(function(item, index){
    self.$set(self.noticeData[index], 'marginTop', 0);
});

具体可以看链接

这篇关于javascript - vue created里新添加的属性,视图不会更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆