Я думаю, этот вопрос немного глупый, но я, честно говоря, не смог разобраться сам.
Моя проблема заключается в том, когда я пытаюсь отобразить кучу компонентов, используя
…
<tbody v-for="body in bodies">
<row-c v-for="row in body.rows">
…
bodies
bodies: [
{
someOther: 'smth',
rows: [
{title: 'b1r1'},
{title: 'b1r2'},
{title: 'b1r3'}
]
},
{
someOther: 'smthElse',
rows: [
{title: 'b2r1'},
{title: 'b2r2'},
{title: 'b2r3'}
]
}
]
Я получаю ошибку
[Vue warn]: Error in render: 'TypeError: body is undefined'
Но без компонента он работает: пример CodePen без ошибок.
Разумеется, я прочитал документы, указанные в сообщении об ошибке, но не понимаю, как мне изменить свой код. Дайте мне совет, пожалуйста :)
Заранее спасибо.
Я только что обновил первый codepen в соответствии с ответом Джованэ, и в нем больше нет ошибок.
Ну, поскольку вы работаете с шаблоном DOM, вы должны взглянуть на DOM-шаблон Parsing Caveats
Для того, чтобы ваш пример работы вы должны использовать атрибут is
в <tr>
:
<tbody v-for="body in bodies">
<tr is="row-c" v-for="row in body.rows" v-bind:row="row"></tr>
</tbody>
И добавьте прокрутку row
в row-c
:
Vue.component('row-c', {
props: ['row'],
data: function() {
return {
body: ''
}
},
template: "#row-c-template"
});
bodies
?