各ページにネストされたさまざまなコンポーネントがたくさんあることになります。私は自分のアプリケーションの各ページのコンポーネントビューを持っています。各ページには、スライダー、テーブルバー、カルーセルなど、私が作ったコンポーネントを再利用するさまざまなVueインスタンスがあります。多くのVueインスタンスが相互に干渉しているため、これを再構成しようとしています私は、多くの内部コンポーネントを持つメインのVueインスタンスを1つしか持たないことに気付きました。インラインテンプレートを使用したVuejsネストされたコンポーネント
これは私がこれまでに設定したものです:
問題があるが、それはホームビューコンポーネントをロードした後停止していることです。 Laravelのブレード構文を利用し、通常のHTMLを使用しないために、テンプレートを設定しない限り、ネストされたコンポーネントはロードされません。プラスなど、私のサーバ側ヘルパーのすべて、
Javascriptを:
var App = new Vue({
el: '#app',
attached: function() {
console.log('main app loaded');
},
components: {
'home-view': {
attached: function() {
console.log('home view loaded');
},
components: {
'home-slider': {
attached: function() {
console.log('homepage slider loaded');
},
components: {
'slider': {
template: '#slider-template',
replace: true,
attached: function() {
console.log('general slider component loaded');
},
components: {
'slide': {
template: '#slide-template',
replace: true,
props: ['index', 'text'],
attached: function() {
console.log('general slide component loaded');
}
}
}
}
}
}
}
}
}
});
HTML:
<script type="x-template" id="slider-template">
<div class="slider">
<content></content>
</div>
</script>
<script type="x-template" id="slide-template">
<div class="slide" id="slide{{ index }}">
{{ text }}
</div>
</script>
<div id="app">
<component is="home-view">
<div id="slideshow" v-component="slider" inline-template>
<slider>
<slide index="1" text="Slide #1"></slide>
<slide index="2" text="Slide #2"></slide>
</slider>
</div>
<p>More content specific to the homepage here.</p>
</component>
</div>
私はこれをoverthinkingかもしれないが、任意のヘルプ/アイデアをありがとう!
は、私は、これはコンポーネントのインラインのテンプレートを定義するのではなく、親と子のテンプレートをマージされてやっていることと思います。デビッドは正しいです。 – jasonszhao