Я пытаюсь понять, как сделать один компонент внутри другого в VueJS. Например, что-то вроде этого, что, к сожалению, не работает (кажется, что дочерний компонент ничего не делает):
http://www.webpackbin.com/NyI0PzaL-
Я в равной степени заинтересован в том, чтобы делать это с использованием встроенных шаблонов, а также с использованием метода расширения файла .vue, как показано выше.
Вот код из неработающего примера выше:
main.js
import Vue from 'vue'
import App from './App.vue'
import Child from './Child.vue'
new Vue({
el: 'body',
components: { App, Child }
})
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<app></app>
<script src="main.js"></script>
</body>
</html>
App.vue
<template>
<div>
<h1>{{ parent_msg }}</h1>
<child></child>
</div>
</template>
<script>
export default {
data () {
return {
parent_msg: 'Hello From the Parent!'
}
}
}
</script>
Child.vue
<template>
<h1>{{ child_msg }}</h1>
</template>
<script>
export default {
data () {
return {
child_msg: 'Hello From the Child!'
}
}
}
</script>
Несмотря на то, что этот пример размещен на webpackbin.com, в двух проектах, где я хотел бы его использовать, я использую Laravel в одном и Laravel Spark в другом. В простом приложении Laravel я в основном использую файлы .vue, а в приложении Laravel Spark я в основном использую встроенные шаблоны. Буду особенно признателен за любые рабочие образцы. Спасибо!
ОБНОВЛЕНИЕ
Спасибо Линусу за его ответ ниже. Похоже, мне нужны эти изменения для глобальной регистрации дочернего компонента в моем файле main.js:
import Vue from 'vue'
import App from './App.vue'
import Child from './Child.vue'
Vue.component('child', Child);
new Vue({
el: 'body',
components: { App, Child }
})
В качестве альтернативы, чтобы дочерний компонент оставался локальным для использования в родительском, я мог бы изменить родительский компонент (App.vue) следующим образом:
<template>
<h1>{{ parent_msg }}</h1>
<div>
<child></child>
</div>
</template>
<script>
import Child from './Child.vue';
export default {
components: {Child},
data () {
return {
parent_msg: 'Hello from the parent component!'
}
}
}
</script>