2016-12-28 6 views
0

У меня есть 2 компонента:Вью ребенок компонент не оказывающего

Vue.component('page', { 
    props: ['pages'], 
    template: '<li>{{ pages.title }}</li>' 
}) 

Vue.component('block', { 
    props: ['blocks'], 
    template: '<div>{{ blocks.id }}</div>' 
}) 

«Страница» является компонентом Родитель, и «Блок» ребенок компонент.

Оба компонента содержит цикл через массив:

<page v-for="page in pages" v-bind:pages="page"> 
    <block v-for="block in blocks" v-bind:blocks="block"></block> 
</page> 

Компонент «Блок» не визуализируемый на всех, в то время, когда он помещен вне «страницы» компонента родительской. Я чувствую, что мне не хватает чего-то очевидного, но что это?

ответ

1

Вы должны включить компонент блока в список компонентов компонента страницы.

var block = { 
    props: ['blocks'], 
    template: '<div>{{ blocks.id }}</div>' 
}); 

Vue.component('page', { 
    data: function() { 
    return { 
     pages: [{title: 'Some title', blocks: [{id: 1, {id: 2}, {id: 3]}] 
    } 
    }, 
    components: { 
    block: block, 
    }, 
    props: ['pages'], 
    template: `<li>{{ pages.title }}<block v-for="block in page.blocks" v-bind:blocks="block"></block></li>` 
}); 

Затем используйте компонент страницы, как:

<page v-for="page in pages" v-bind:pages="page"></page> 

Вы можете проверить documentation

+0

Я боюсь, что это не работает. Я получаю «Неизвестный пользовательский элемент: ». Я также чувствую, что это решение не совсем правильно, я хотел бы сохранить как отдельные компоненты, если это вообще возможно. –

+0

Они все еще являются отдельными компонентами, единственное отличие состоит в том, что блок теперь зарегистрирован локально. Если вы предпочитаете сохранить то, что у вас есть, то вам следует изменить способ использования страниц и блоков. То, что находится между тегами , будет заменено на то, что вы определили в атрибуте шаблона, поэтому ваш компонент блока никогда не будет отображаться. Вы должны изменить шаблон страницы, чтобы использовать компонент блока в нем. – Nora

+0

Я нашел этот JSBin: https://jsbin.com/boluhe/3/edit?html,js,output Это делает то, что я хочу, без циклов. Возможно ли это только при использовании статических компонентов? –

Смежные вопросы