私は、単純に、オプションの配列を持つ小道具を持ち、それぞれのメニューのアイテムをレンダリングするメニューコンポーネントを持っています。私は、それぞれのメニュー項目の中にあったマークアップをユースケースに応じてカスタマイズできるようにしたいので、メニュー項目要素内にプレースホルダを使用しました。<slot>を反復コンテンツ領域に追加する
この例は、fiddleにあります。
const Menu = {
template: `
<ul>
<li v-for="item in options" :class="item.colour">
<slot></slot>
<span class="label">{{item.name}}</span>
</li>
</ul>
`,
data:() => {
return {
options: [
{ name: 'one', colour: 'red' },
{ name: 'two', colour: 'green' },
{ name: 'three', colour: 'blue' },
{ name: 'four', colour: 'yellow' }
]
};
}
};
const app = new Vue({
components: {
custommenu: Menu,
},
template: `<custommenu><span class="colour"></span></custommenu>`
});
app.$mount('#app');
これはVue.JSのV1にうまく働いたが、V2にアップグレードした後、私は、デフォルトのエラー「スロットの重複存在 『見ている』と同じレンダリングツリーで見つかったが - 。これはおそらく、エラーをレンダリングする原因になります」
これはv2で可能なのでしょうか、同じことを達成する別の方法がありますか?
ブリリアント、ありがとう - それはうまく動作します。私はドキュメントのスコープスロットを見つけたはずです! – Stuart
@craig_h、あなたはvue.jsをマスターしているようです私はあなたの助けが必要です。これを見てください:http://stackoverflow.com/questions/41904428/how-to-update-data-on-a-page-without-refreshing-on-the-vue-js –