【发布时间】:2019-07-11 18:34:34
【问题描述】:
我正在尝试发送一个包含数组的数组,该数组又包含从另一个组件到一个组件的对象,但该数组的内容在子组件中似乎是空的。
我尝试使用 JSON.Stringify() 将数据作为字符串发送,也可以作为数组发送
我的父组件:
data: function(){
return{
myLineItems : []
}
},
created(){
this.CreateLineItems();
},
methods:{
CreateLineItems(){
let myArrayData = [[{"title":"Title1","value":2768.88}],[{"title":"Title2","value":9}],[{"title":"Title3","value":53.61},{"title":"Title4","value":888.77},{"title":"Title5","value":1206.11},{"title":"Title6","value":162.5}]]
this.myLineItems = myArrayData;
}
}
我的父组件的模板:
/*
template: `<div><InvoiceChart v-bind:lineItems="myLineItems"></InvoiceChart></div>`
我的子组件:
const ChildComponent= {
props: {
lineItems: {
type: Array
}
},
mounted() {
console.log(this.lineItems);
}
};
父组件是这样创建的(在我们主组件的一个方法中):
var ComponentClass = Vue.extend(InvoiceDetails);
var instance = new ComponentClass({
propsData: { invoiceid: invoiceId }
});
instance.$mount();
var elem = this.$refs['details-' + invoiceId];
elem[0].innerHTML = "";
elem[0].appendChild(instance.$el);
如果我尝试在子组件中执行 console.log(this),我可以看到 lineItems 属性中存在正确的数组数据..但我似乎无法访问它。
我刚刚开始使用 VueJS,所以我还没有完全掌握这里的数据流,尽管我已经尝试阅读文档以及 stackoverflow 上的类似案例,但无济于事。
预期结果:使用 this.lineItems 应该是我从父级发送的值的填充数组。
实际结果:this.lineItems 是一个空数组
编辑:问题似乎与我创建父组件的方式有关:
var ComponentClass = Vue.extend(InvoiceDetails);
var instance = new ComponentClass({
propsData: { invoiceid: invoiceId }
});
instance.$mount();
var elem = this.$refs['details-' + invoiceId];
elem[0].innerHTML = "";
elem[0].appendChild(instance.$el);
将其更改为常规的自定义 vue 组件修复了问题
【问题讨论】: