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

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

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

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2960閲覧

vue.jsでv-selectで選択した内容をプレビューで表示したい

shuka

総合スコア16

Vue.js

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/09/02 02:58

編集2020/09/02 03:01

前提・実現したいこと

vue.jsでv-selectで選択した内容をプレビュー表示したい
vue.jsは最新verです
下のソースコードでいうitem-valueではなくitem-textを表示させたいということです

発生している問題・エラーメッセージ

エラーはありません
プレビュー表示したい内容が表示できないのが問題です

該当のソースコード

入力側

html

1 <td width="30%" class="text-left"> 2 選択 3 </td> 4 <td> 5 <v-select 6 v-model="data.selection" 7 outlined 8 :items="items.selections" 9 item-text="value" 10 item-value="key" 11 ></v-select>

プレビュー側

html

1 <tr v-show="data.selection != ''"> 2 <th> 3 選択 4 </th> 5 <td class="texts-linefeet isClose"> 6 {{ data.selection }} 7 </td>

js

1 props: { 2 data: Object, 3 }, 4 data: () => ({}), 5 computed: { 6 ...mapState(['items']), 7 }

検証ツールで見たsessionstorageのなか

items:{} selections:[{key:"",},...] 0:{key:"0", value:"A"} 1:{key:"1", value:"B"} 2:{key:"2", value:"C"}

入力後プレビュー表示の際はサーバーとのやり取りはありません

試したこと

item-value="key"

item-value="value"

にすれば、一応プレビューの問題はなくなるのですが、そうするとサーバー側に渡す値がkeyじゃなくなって他の場所で問題が起こるので、それ以外の解決策をお願いします
公式ドキュメント読んでみたのですが、解決策分かりませんでした

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

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

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

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

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

guest

回答1

0

ベストアンサー

v-selectで選択したオブジェクトのvalueを表示したい場合、下記のような実装で対応できると思います。

v-modelにバインドしたselectionには、選択したオブジェクトのkey値が入っているので、そのkey値からselections配列を検索し、key値が一致するオブジェクトを返すという実装がcomputedのselectedItemです。

html

1<v-select 2 v-model="selection" 3 outlined 4 :items="items.selections" 5 item-text="value" 6 item-value="key" 7></v-select> 8<div v-if="selectedItem">selected: {{ selectedItem.value }}</div>

javascript

1<script> 2export default { 3 data() { 4 return { 5 selection: '', 6 items: { 7 selections: [ 8 { key: '0', value: 'A' }, 9 { key: '1', value: 'B' }, 10 { key: '2', value: 'C' }, 11 { key: '3', value: 'D' }, 12 { key: '4', value: 'E' } 13 ] 14 } 15 } 16 }, 17 computed: { 18 selectedItem: function() { 19 return this.items.selections.find(i => i.key === this.selection) 20 } 21 } 22} 23</script>

投稿2020/09/19 05:43

rubytomato

総合スコア1752

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問