最近は全くQiitaを書く余裕がありません!
それくらい毎日全力で必死に生きております笑
ただ今慣れないvue.jsでとあるプロダクトを作っています。
毎日いちいちつまづきまくっていますが、その1つを今日は記載します。
#実施していること
ベタですが、vue.js(vuetify導入)とLaravelで簡単なtodo管理アプリ的なのを作っていました。
ajax(axios)とAPIでデータの受け渡しをしています。
#困ったこと
ajaxで受け取れたデータをv-selectの :itemsに上手く表示できない!
##該当コード
<v-select
v-model="todo"
:items="todos"
prepend-icon="mdi-clipboard-check-multiple-outline"
label="to doを選択"
>
</v-select>
<script>
export default {
data: () => ({
todo: [],
todos: [],
}),
methods: {
fetchTodos: function(){
axios.get('/api/get')
.then(res=>{
console.log(res)
this.todos=res.data
})
},
},
created() {
this.fetchTodos()
},
}
</script>
非常にシンプルでよくあるコードです。
resの中身はデベロッパーツールで確認済み。
console.log(res)
[{…}, {…}]
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" に追加したい!
ここまでデータとれてるから絶対出来るじゃん!
と確信しつつもなかなか答えに辿りつかず。
上記のように this.todos=res.data
と記載するとitemsの中身は[object Object]、
配列のままそらぁそうだ、
だって配列の中のnameだけ下さいって指示書いてないもーん。
でもその指示の書き方がわかりません・・・
出来たコードがこちら
<v-select
v-model="todo"
item-value="id"
item-text="name"
:items="todos"
prepend-icon="mdi-clipboard-check-multiple-outline"
label="to doを選択"
>
</v-select>
item-value
と item-text
を利用すると表示できました。