質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Q&A

解決済

3回答

229閲覧

Vue.jsで、コンポーネントに要素を渡す方法

yassh

総合スコア29

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

0グッド

1クリップ

投稿2018/04/18 13:34

Reactでは次のように、プリミティブな値だけでなく要素もコンポーネントに渡せます。

jsx

1const List = ({ items }) => ( 2 <ul>{items.map(item => <li key={item.id}>{item.content}</li>)}</ul> 3); 4 5const items = [ 6 { 7 id: 1, 8 content: ( 9 <span> 10 AAA<br />AAA 11 </span> 12 ) 13 }, 14 { 15 id: 2, 16 content: ( 17 <span> 18 BBB<br />BBB 19 </span> 20 ) 21 } 22]; 23 24const App = () => <List items={items} />;

デモ

これをVue.jsでやるにはどうしたらいいでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

動的コンポーネントを使う場面ではないでしょうか
公式ガイド

サンプル実装
サンプル実装

Vueのコンポーネントは基本Objectにtemplate, dataなど必要なプロパティを生やしたものになります。
そのため、プロパティにtemplateを生やしたObjectを持たせてpropsとして、渡してやれば子供側で使うことができるかと思います。

投稿2018/04/18 15:18

sakapun

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yassh

2018/04/19 01:54

なるほど!勉強になりました!
guest

0

ベストアンサーを参考にして、次のような形で解決することができました。

js

1const List = { 2 props: ["items"], 3 template: ` 4 <ul> 5 <li v-for="item in items" :key="item.id"> 6 <component :is="item.content" /> 7 </li> 8 </ul> 9 ` 10}; 11 12const App = { 13 components: { List }, 14 data() { 15 return { 16 items: [ 17 { 18 id: 1, 19 content: { 20 template: "<span>AAA<br />AAA</span>" 21 } 22 }, 23 { 24 id: 2, 25 content: { 26 template: "<span>BBB<br />BBB</span>" 27 } 28 } 29 ] 30 }; 31 }, 32 template: '<List :items="items" />' 33}; 34

デモ

投稿2018/04/19 01:56

yassh

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

v-htmlを使用することで可能ではないでしょうか?

以下のように記述できます。

<li v-html="<span>aaaa</span>"></li>

VueJSガイド-テンプレート構文

サンプル実装

投稿2018/04/18 17:12

編集2018/04/18 23:49
euledge

総合スコア2404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yassh

2018/04/19 01:54

ありがとうございます。それも1つの手ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問