Я новичок в Vue, и я пытаюсь динамически создать список Div, каждый с X числом дочерних Div. Также потомки будут добавляться, редактироваться или удаляться в различных точках.
Данные div изначально поступают через структурированный массив с именем pageObjects
:
var pageObjects = [
{
id: "1",
title: "Page 1",
subpages: [
{
id: "2_1",
title: "Page 2 Subpage 1"
},
{
id: "2_2",
title: "Page 2 Subpage 2"
}
]
},
{
id: "2",
title: "Page 2",
subpages: [
{
id: "2_1",
title: "Page 2 Subpage 1"
},
{
id: "2_2",
title: "Page 2 Subpage 2"
}
]
}
];
Я могу создать родителя и дочерние элементы легко делаются с помощью пользовательских Vue компонентов:
//init the container
var pagescontainer = new Vue({
el: '#pagescontainer',
data: {
pageObjects
}
});
Vue.component('page-component', {
template: `
<div v-bind:id="'page' + page.id">
This is a parent div with title {{page.title}}
<subpage-component v-for="subpage in page.subpages" v-bind:subpage="subpage" />
</div>
`,
props: {
page: Object
}
});
Vue.component('subpage-component', {
template: `
<div v-bind:id="'subpage' + subpage.id">
This is a sub page with title {{ subpage.title }}
</div>`,
props: {
subpage: Object
}
});
Все родители и дети могут быть созданы с помощью HTML:
<div id="pagescontainer">
<page-component v-for="page in pageObjects" :page="page"/>
</div>
Это работает - но я не знаю лучшие практики для редактирования дочерних данных или динамического добавления новых дочерних данных. Я могу изменить массив pageObject
, который обновляет все текущее содержимое, но должен быть лучший способ - редактировать весь массив для всех родителей и элементов div, просто чтобы изменить одну часть одного дочернего элемента div, кажется чрезмерным и неэффективным. Кроме того, я не могу добавлять / удалять дочерние элементы, просто удаляя его из массива.
Чтобы самостоятельно редактировать содержимое дочернего элемента div, я попытался добавить переменные и методы «data» непосредственно в компонент подстраницы:
Vue.component('subpage-component', {
template: `
<div v-bind:id="'subpage' + subpage.id">
This is a sub page with title {{ subpage.title }}
</div>
`,
props: {
subpage: Object
},
data: {
title: "some title here"
},
methods: {
updateSubPageHtml: function (_title) {
console.log(this);
console.log("updating title to " + _title);
this.title = _title;
}
}
});
Но когда я запускаю его, я получаю следующую ошибку:
ReferenceError: заголовок не определен.
Может кто-нибудь предложить лучший способ добавить / редактировать / удалять детей до родителей динамически?