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

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

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

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

Vuetify.js

Vuetify.jsは、マテリアルデザインを基本とするVue.jsのCSSフレームワークです。多くのマテリアルデザインのコンポーネントを提供しており、あらゆるアプリケーションに対応可能。vue-cli用テンプレートがあり、簡単にページを作成できます。

Q&A

解決済

1回答

5212閲覧

vue.js、vuetify ajaxで受け取ったデータをv-selectのitemに表示させたい

CCHH

総合スコア11

Vue.js

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

Vuetify.js

Vuetify.jsは、マテリアルデザインを基本とするVue.jsのCSSフレームワークです。多くのマテリアルデザインのコンポーネントを提供しており、あらゆるアプリケーションに対応可能。vue-cli用テンプレートがあり、簡単にページを作成できます。

0グッド

0クリップ

投稿2020/03/20 21:21

vueを最近勉強しています。
初心者の質問ですが、よろしくお願いします。

前提・実現したいこと

ajax(axios)で受け取ったデータをv-selectのitemに表示させたい。
ajaxでデータが受け取れているのはconsoleで確認できていますが、自分が表示させたい情報を上手く表示させる事ができません。

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

エラーメッセージはありません。
selectのitemは[object Object]になっています。

該当のソースコード

javascrip

1 <v-select 2 v-model="todo" 3 :items="todos" 4 prepend-icon="mdi-clipboard-check-multiple-outline" 5 label="to doを選択" 6> 7 </v-select>

javascript

1 2 export default { 3 data: () => ({ 4 todo: [], 5 todos: [], 6 }), 7 8 methods: { 9 10 fetchTodos: function(){ 11 axios.get('/api/get') 12 .then(res=>{ 13 console.log(res) 14 console.log(res.data) 15 }) 16 }, 17 }, 18 19 created() { 20 this.fetchTodos() 21 }, 22 } 23
console.log(res.data) [{…}, {…}] 0: {…} id: (1) user_id: (1) name: (hoge) created_at: (...) updated_at: (...) 1: {…} id: (2) user_id: (2) name: (hogehoge) created_at: (...) updated_at: (...)

この配列のnameをitems:todosに表示させたいです。

試したこと

javascript

1console.log(res.data) 2this.todo=re.data //[object.Object] 3this.todo=res.data.name // no data Available 4

取得したres.dateをv-forで回して、そのnameを取得するというイメージなんですが、
どこにv-forを書けば良いのかさっぱり分からず。。。
<v-select>タグ内に書くとselecternha
増えていました、それはそうですよね・・・

データを受け取れているので、後は表示だけの問題だと思うのですが・・・
お手数おかけしますが、どうぞよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

公式ドキュメント

When using objects for the items prop, you must associate item-text and item-value with existing properties on your objects. These values are defaulted to text and value and can be changed.

itemsにオブジェクトを用いる場合にはitem-textitem-valueをオブジェクト内のプロパティに関連付ける必要があります。デフォルトではtextvalueとなっており、これらは変更可能です。

と書かれています。つまりitem-textに指定したプロパティ名の値が、表示されるテキストに使われ、item-valueに指定したプロパティ名の値が、選択した時の値となります。

具体的には、todosが以下のようになっている場合

JavaScript

1todos: [ 2 { id: 1, name: "hoge" }, 3 { id: 2, name: "fuga" }, 4]

以下のようにitem-valueにidをitem-textにnameを指定してやると、一番目のitemに"hoge",二番目のitemに"fuga"と表示させることができ、"hoge"を選択した場合にはtodoidの値である1が代入され、"fuga"を選択した場合には2が代入されるようになります。

Vue

1<v-select 2 v-model="todo" 3 item-value="id" 4 item-text="name" 5 :items="todos"> 6</v-select>

投稿2020/03/20 22:50

編集2020/03/21 00:49
miso24

総合スコア75

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

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

CCHH

2020/03/21 00:16

早速試してみました! できました、ありがとうございました!! 公式ドキュメントも見てみたんですが、そもそも公式ドキュメントが何を言っているのかも正直よくわからず・・・ でも教えて頂いてようやくわかりました、 item-textで表示する内容を指定してあげれば良いんですよね。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問