Vue.jsとajaxを利用して、都道府県を選択すると、ajaxでその都道府県の市区町村リストを取得し、市区町村のプルダウンに表示する、という機能を実装したいです。
(アプリケーションはLaravel5.8を利用して実装しています)
現在添付のようなコードを書いており、以下の挙動を確認しています。
- ajax通信自体は成功しており、
res.data
に渡したい値(選択した都道府県の市区町村のリスト)が入っている - (1)の位置で適当な配列を返すと、市区町村のプルダウンに反映される
- (2)の位置で適当な配列を返しても、市区町村のプルダウンに反映されない
また、都道府県のプルダウンのchangeイベントをトリガにしてajaxGetCityListを発火させる方法も試しましたが、やはり取得した市区町村リストをプルダウンにうまく渡すことが出来ません。
ajaxで取得した値をプルダウンに渡すにはどのようにしたらよいでしょうか。
Vue
1<template> 2 <div class="input-group"> 3 <div class="input-group-addon">都道府県</div> 4 <select class="form-control" :name="'pref'" v-model="selectedpref" options="preves"> 5 <option value="">選択して下さい</option> 6 <option v-for="pref in preves" v-bind:value="pref.value"> 7 {{ pref.text }} 8 </option> 9 </select> 10 <div class="input-group-addon">市区町村</div> 11 <select class="form-control" :name="'city'" v-model="selectedcity" options="cities"> 12 <option value="">選択して下さい</option> 13 <option v-for="city in ajaxGetCityList(selectedpref)" v-bind:value="city.value"> 14 {{ city.text }} 15 </option> 16 </select> 17 </div> 18</template> 19 20<script> 21 import axios from 'axios'; 22 export default { 23 props: { 24 cityval: String, // 市区町村(保存されている値) 25 prefval: String, // 都道府県(保存されている値) 26 preves: Array, // 都道府県の選択肢 27 }, 28 data: function() { 29 return { 30 selectedpref: this.prefval, 31 selectedcity: this.cityval, 32 cities: [], 33 } 34 }, 35 methods: { 36 ajaxGetCityList: function(pref) { 37 // (1) 38 return axios.get('/ajax_get_city/'+pref) 39 .then((res) => { 40 // (2) 41 return res.data; 42 }); 43 } 44 }, 45 mounted() { 46 console.log(this); 47 } 48 } 49</script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/22 01:00