Vue 2
はデータ駆動型なので、手動でDOMに何も影響を与えないようにする必要はありません。その代わりに、要素をビューモデルの基になるデータにバインドする必要があります。そのことを念頭において、あなたの例を書き直す必要があります。まず、あなたの要素を作ることから始めcomponent
:
Vue.component('my-button', {
template: '<button v-on:click="test()">{{text}}</button>',
props: ['text'],
methods: {
test() {
alert('Test');
}
}
});
次に、あなたのメインのビューモデルを作成し、V-のため使用して、ボタンコンポーネントを追加することができます。
マークアップ:
<button v-on:click="addNewElement()">Add Element</button>
<my-button v-for="button in buttons" :text="button"></my-button>
ビューモデル:
new Vue({
el: '#app',
methods: {
addNewElement: function() {
this.buttons.push('Test');
}
},
data: {
buttons: []
}
});
この例では、ボタンを配列thテンプレートに手動で追加するのではなく、ページに表示されます。ここで
はJSFiddleです:http://jsfiddle.net/10q9je5a/
あなたはより一般的な何かをしたい場合は、あなたは、単にdifferent components
の配列を作成し、Vueのレンダリングするためにどのコンポーネント知らせるために:is
を使用することができます。
マークアップ:
<div id="app">
<button v-on:click="addNewElement()">Add Element</button>
<div :is="element.component" v-for="element in elements" v-bind="element.props"></div>
</div>
ビューモデル:
new Vue({
el: '#app',
methods: {
addNewElement: function() {
this.elements.push({component: 'my-button', props: {text: 'Test'}});
}
},
data: {
elements: []
}
});
ここでは、そのためにJSFiddleです:is`:http://jsfiddle.net/cxo5eto0/
あなたは 'の任意のドキュメントへのリンクを持っていますか? –
公式のVue.jsドキュメントの[動的コンポーネント](https://vuejs.org/v2/guide/components.html#Dynamic-Components)のセクションにあります。 –