我有一个城市选择:
<select v-model="city">
<option value="" selected>CIDADE AONDE VOCÊ ESTUDA</option>
<option value="city1">City 1</option>
<option value="city2">City 2</option>
<option value="cityx">City x</option>
</select>
一所学校选择:
<select v-model="school">
<option
v-for="item in schools"
v-bind:value="item.name"
v-bind:selected="school == item.name"
>
@{{ item.name }}
</option>
</select>
这是数据(由Laravel Blade视图填充),可能是也可能不是城市和学校:
data: {
...
city: '{{ Input::old('city') }}',
school: '{{ Input::old('school') }}',
schools: [],
},
我也有关于城市的观察:
watch: {
'city': '__cityChanged',
},
这是事件处理程序:
__cityChanged: function (event)
{
this.school = '';
this.__fetchSchools();
},
和抓手:
__fetchSchools: function (event)
{
if (this.city)
{
this.$http.get('/schools/' + this.city, function (schools)
{
this.schools = schools;
});
}
},
几乎所有方法都运行良好,唯一的问题是,当表单重新加载(或重新发送回验证失败)并且城市和学校已被选中时,它会调用__fetchSchools
并填写学校选择正确,但它没有设置学校选择选项,因此用户看到的是未选择的学校。
有没有办法让它使用Vue?
答案 0 :(得分:0)
问题出现在__cityChanged
处理程序中,这是修复:
__cityChanged: function (event)
{
var city = '{{ Input::old('city') ?: (isset($subscription) ? $subscription->city : '') }}';
if (this.city !== city)
{
this.school = '';
}
this.__fetchSchools();
},