<template> <li class="definition" :id="'def' + body.id"> <ul> <li :is="element_wrapper.template" :body="element_wrapper.element" v-for="element_wrapper in template_name_added">{{element_wrapper.element}}</li> </ul> </li> </template> <script> import DefElement from './DefElement.vue' import Example from './Example.vue' var Definition = { name: 'Definition', props: { body: Object }, components: { DefElement, Definition, Example }, computed: { template_name_added: function(){ return this.body.elements.map( function(element){ return { 'template': { 'explanation': 'DefElement', 'definition': 'Definition', 'example': 'Example' }[element.type] || 'li', 'element': element } }) } } } export default Definition </script> <style> li.quote { font-style: italic; } </style>