2017-06-17 22 views
0

私は自分のゲームでVue.jsを学習していますが、Vue.jsのコンポーネントを動的に追加したり削除したりする方法があるのだろうか? はここに私の現在のコードVue.js dynamic追加と削除

var vue = new Vue({ 
    el: "#fui", 
    template: `` 
}) 

const HelloCtor = Vue.extend({ 
    props: ['text'], 
    template: '<div class="hello">{{ text }}</div>', 
}); 

const vm = new HelloCtor({ 
    data: { 
    text: 'HI :)' 
    } 
}); 

/* 
How can I do something like this? 

vue.add(vm); 
vue.remove(vm); 

*/ 

コードは、基本的にはそう自分のため

を話すだ、それは動的ヴューにVue.jsコンポーネントを追加および削除することも可能(とどのように?)でしょうか?

+0

。しかし、あなたのビジネス要件をさらに説明することができれば、方法があると確信しています。 – Charith

+0

@charith私は、アラートボックス、在庫、設定などの複数のアイテムを持っているゲームを持っています...彼らはドラッグ可能であり、閉じられます。私はそれらを動的に削除して追加する必要があります – JeePing

+0

[条件付きレンダリング](https://vuejs.org/v2/guide/conditional.html)をしたくないですか? – Bert

答えて

0

vmをテンプレートに入れる場所が必要です。次に、vm.$mount('el')の要素に手動で$mountコンポーネントを追加することができます。 vm.$destroy(true)で要素を削除することもできます。 DestroyはDOMから要素を削除しません。 (vm.$el).remove()

これはあなたが探しているものではありません。手動で$destroy()を呼び出すと、おそらく正しく動作していない可能性がありますが...コンポーネントの作成と破棄を制御できます。このような

何かがあなたが作成(あなたはそれがなくなってVM破壊したら、この場合にはノート)コンポーネントを破壊できるようになる:どのようなあなたのコードは、話すことは実装することはできません

<div id="fui"> 
    <button @click="make">Make</button> 
    <button @click="bye">destroy</button> 
    <div id="mountme"></div> 
</div> 

<script> 

    const HelloCtor = Vue.extend({ 
     props: ['text'], 
     template: '<div class="hello">This has been {{ text }}</div>', 

    }) 

    const vm = new HelloCtor ({ 
     data: { 
      text: "Mounted" 
     } 
    }) 

    var vue = new Vue({ 
     el: "#fui", 
     template: ``, 
     methods: { 
      make:() => { 
       vm.$mount('#mountme') 
      }, 
      bye:() => { 
       vm.$destroy(true); 
       (vm.$el).remove();} 
      } 

     }) 


</script> 
+0

サウンドOK ... Make&DestroyをクリックしてからMakeをクリックした後にエラーが発生する場合を除き、https://jsfiddle.net/2pkesc47/ http://prntscr.com/fl7itn – JeePing

+0

これは私が書いた理由ですこの事件はあなたが一度VMを破壊すると消えてしまいます)。もう一度追加する場合は、新しいコンポーネントを再度作成するコードを記述する必要があります。私はそれを捨てたので、破壊は実際にあなたのコンポーネントを破壊することに気付くでしょう。 –

関連する問題