2016-08-25 21 views
0

グリッドと呼ばれるコンポーネントがあります。このコンポーネントの中で、私はサーバーからJSONデータを読み込み、それらをレンダリングします。それらはほとんどが文字列と整数です。時にはJSONには<strong>myvalue</stong>のようなHTMLが含まれているので、データを3つの角括弧{{{}}}でレンダリングします。Vue.js - コンポーネント内部コンポーネント

HTMLは純粋なHTMLではなく、<my-component my-param="1"></my-component>のようなコンポーネントです。 Vue.jsにこの共用者を表示する方法を教えてください。私が得るのは、純粋にグリッドに印刷されたHTMLだけです。

おかげで、それは、コンポーネントの場合は、その中に何があるか表示されません({{{}}}と同等です)v-htmlを使用して

+0

あなたは次のようなことを達成しようとしていますか?https://github.com/gurghet/vue-smart-table? – gurghet

答えて

0

リモートからロードしたコードをもう一度コンパイルする必要があります。

ps:私はDOMを操作するためにjQueryを使用します。

このコンポーネントでは、サーバーからJSONデータを読み込み、それらをレンダリングします。

"loadAndRenderFromServer()"という名前の関数があると仮定します。以下のコードを適合させてください。

例:あなたのグリッドは、マークアップ<div id='grid'>

// vuecomponent.js 
export default { 
    [...] 

    methods: { 
     loadAndRenderFromServer() { 
      // first, load remote content and insert into #grid 

      // now, compile 
      this.$compile($("#grid").get(0)); 
     } 
    }, 

    [...] 
} 

を持っている場合あなたは、あなたのコンポーネントがロードされたコンテンツを複製するために開始した場合、「コンパイル」を使用する必要があるかもしれません。 のVueJSドキュメントをチェックして、のコンパイルメソッドをコンパイルしてください。

+3

「DOMを操作するためにjQueryを使用します」は、Vueのポイントが見つからないようです。 – ceejayoz

+0

かなり近い人。私はJSONデータでv-forを持っています。データセットを持つ配列です。各データセットはテーブル行を表します。ですから、私はthis.data = response.dataを実行します。それだけです。後でコンパイルを呼び出すと、うまくいくのでしょうか? – grafa

+0

@ceejayoz、申し訳ありませんが、間違っています。あなたはvueでDOMに簡単な操作をすることもできますが、vue内でjQueryや他のライブラリを一緒に使うのに間違いはありません。 –

0

代わりに親テンプレートに<slot>を使用してみます。

動的コンポーネントを使用する場合は、<component>を使用する必要があります。動的コンポーネント内にコンテンツを追加する場合は、<slot>を使用する必要があります。

私はあなたが

<component :is="myComponent" /> 

のように、これらのコンポーネントのモデルは、任意のコンテンツを挿入するために、いくつかの<slot> Sを入れて内部のものを使用することをお勧めします。

+0

ありがとうございます。私のv-forでは、{{{and}}}で表のセルデータをレンダリングする代わりに、代わりにを使用する必要がありますか?配列アイテムをレンダリングするWil? – grafa

+0

詳細については、ドキュメントを参照してください。https://vuejs.org/guide/components.html#Content-Distribution-with-Slots – gurghet

関連する問題