VueJS使用$ set或Vue.set更新{}无效

时间:2018-08-21 09:25:48

标签: javascript vue.js vuejs2 frontend

我有解析我的输入并返回obj []的函数 工作正常,但是当我尝试将该局部变量分配给this.data时,它将停止正常工作

new Vue
({
    el: '#app',
    data: {
        data: {},
        source: [],
        dataIsLoaded: false
    },
    methods:
    {
        parse: function()
        {
            if (this.dataIsLoaded)
            {
                var p = getObjArray(this.source); 
                console.log("json")
                console.log(this.data);  
                console.log("p:")
                console.log(p);  
            }
        },
        loadData: function()
        {
            (...)
            this.dataIsLoaded = true;
        }
    }
});

输出:

Works correctly

因此,它对于p正常工作

但是当我尝试分配this.data = p时,它们都为“空”

parse: function()
{
    if (this.dataIsLoaded)
    {
        var p = getObjArray(this.source); 
        this.data = p;
        console.log("json")
        console.log(this.data); 
        console.log("p:")
        console.log(p);  
    }
},

输出:

not working

properties

我一直在尝试:

this.data = Object.assign({}, this.data , p);

&&

this.$set(this.data, 0, p[0])

&&

Vue.set(this.data, 0, p[0])

所有这些都导致:

  

[Vue警告]:组件渲染函数中可能存在无限的更新循环。

     

(位于)

也在更改

data: {},

data: [],

没有成功:/

1 个答案:

答案 0 :(得分:0)

解决方案:

我更改了实例的属性

  

数据:{},

收件人:

  

数据:{项:[]},

然后用我认为的parse方法

  

this.json.data = p;