Vue.component('tree-items', {
template: '#tree-template',
props: {
item: {
type: Object,
required: true,
},
},
data: function () {
return {
isOpen: false,
page: {},
navigation: {},
};
},
computed: {
hasChildren: function () {
return this.toArray(this.item.children).length;
},
hasItems: function() {
if (!this.isUndefined(this.items)) {
return this.items.length;
}
return 0;
},
},
methods: {
toggle: function () {
if (this.hasChildren) {
this.isOpen = !this.isOpen
}
},
setItem: function (_item) {
this.item = _item;
}
},
mounted: function () {
this.setItem(this.item);
}
});
Темплейт
<ul v-for="item in items" :key="item.id">
<tree-items
:item="item"
></tree-items>
</ul>
<script type="text/x-template" id="tree-template">
{{ item }}
</script>
Если выводить объект не внутри компонента, то он распечатывается, если внутри, то он пуст, хотя помошник в браузере пишет, что он есть.