Im using Laravel blade and Vue js 2. Im trying to perform a simple task: populate secondary select once first select being changed. With axios call of course. Here is HTML part:
<div class="content" id="app">
<select v-model="selected" @change="onChange">
<option value="" disabled selected>Please Select the Attraction</option>
@foreach($pkgs as $pkg)
<option value="{{$pkg->id}}">{{$pkg->name}}</option>
@endforeach
</select>
<select v-model="selected2">
<option v-for="subpackage in subpackages" v-bind:value="subpackage.id">@{{ subpackage.name }}</option>
</select>
</div>
Here is the js part:
new Vue({
el: '#app',
data: {
selected: '',
selected2: '',
subpackages: [
{id:'', name:'Please select an attraction first'}
]
},
methods: {
onChange:function(){
axios.get("{{route('pos.ajaxGetPkg')}}", {
params:{
pkg_id: this.selected
}
})
.then(function(response){
this.subpackages = [];
this.subpackages = response.data.variants;
console.log(this.subpackages);
})
.catch(e => {
//...
})
}
}
});
In the console I can see received object dumped like
0:{id: 14, name: "Adult", price: "45.00"}
However select2 reminds unchanged