2017-04-13 22 views
0

Vue.JS内の別のコンポーネントの中にコンポーネントを宣言することはできますか? これは私がやろうとしているものです:再利用可能なネストされたVueJSコンポーネント

<!-- this is declared inside some-component.vue file --> 
<script> 
    export default { 
     components:{ 
      'cmptest' : { 
       template:'#cmptest', 
       props:['mprop'] 
      } 
     }, 
     data :() => ({ 
      val:'world' 
     }) 
    }; 
</script> 

<template> 
    <div> 
     <template id="cmptest"> 
      {{mprop}} 
     </template> 
     <cmptest mprop="hello"></cmptest> 
     <cmptest :mprop="val"></cmptest> 
    </div> 
</template> 

私は言い換えれば(Vue.component(...)で)可能な場合は、子コンポーネントを登録するグローバル

を避けたいのですが、私は子供のを指定したいのですが<template>親コンポーネントファイル内(巨大な行を使わずにtemplate:'entire-html-of-child-component-here'

+0

iは、巨大なワンライナー'テンプレートを使用しました追加のファイルを作成する... – andrei

答えて

1

確かに。このよう

「....」 `とそれが正常に動作しますが、誰もがなしでより良い方法を知っている場合:今の

https://jsfiddle.net/wostex/63t082p2/7/

<div id="app"> 
    <app-child myprop="You"></app-child> 
    <app-child myprop="Me"></app-child> 
    <app-child myprop="World"></app-child> 
</div> 

<script type="text/x-template" id="app-child2"> 
    <span style="color: red">{{ text }}</span> 
</script> 

<script type="text/x-template" id="app-child"> 
    <div>{{ childData }} {{ myprop }} <app-child2 text="Again"></app-child2></div> 
</script> 

new Vue({ 
    el: '#app', 
    components: { 
    'app-child': { 
     template: '#app-child', 
     props: ['myprop'], 
     data: function() { 
     return { 
      childData: 'Hello' 
     } 
     }, 
     components: { 
     'app-child2': { 
      template: '#app-child2', 
      props: ['text'] 
     } 
     } 
    } 
    } 
}); 
+0

同じ.vueファイルでそれを行う方法はありますか?私はこの子コンポーネントを1つの.vue(親)ファイルで使用する必要があります。 – andrei

+0

@andreiあなたはそれを行うことができます、更新された答えを確認してください。 – wostex

+0

@wostexあなたの例がその部分の要件を満たしていないと思う:_言い換えれば、親コンポーネントファイル**内に子供の