【发布时间】:2019-05-30 03:41:00
【问题描述】:
我有一个带有来自 Bootstrap Vue 的 b-form-select 控件的页面。 当我更改此控件的值时,我想执行一个可能取消此事件的函数,而不是更改值。
为了让事情变得更复杂,我的选择在子组件中,而我执行的函数在父组件中。
子组件
public values: any[] = [
{ name: 'default'},
{ name: 'forbidden'},
{ name: 'other option' },
]
<b-form-select :value="property" @change="$emit('onPropertyChange', arguments[0])">
<option v-for="(val, key) in values" :value="val" :key="key">{{val.Name}}</option>
</b-form-select>
父组件:
this.property = { name: 'default' }
public onPropertyChange(newValue) {
if (newValue.name === 'forbidden') {
// Not changing this.property
} else {
// Changing it
this.property = newValue
}
}
<child :property="property" @onPropertyChange="onPropertyChange"></child>
当我在选择中选择“禁止”时。我看到选择框已更改为该值,但子项中的属性以及父项中的属性仍然具有旧值,这就是我想要的。我怎样才能选择拥有旧值?
Bootstrap Vue 似乎没有更改事件的 prevent 修饰符。 我也尝试过使用本机事件,但也有同样的问题。
我是不是做错了什么?
【问题讨论】:
-
不知道
<b-form-select>是什么组件,但是常规选择使用v-model绑定选择的值。 -
@thefallen 因为我从父母那里获得了属性,所以我不允许使用 v-model,因为您不应该在 Vue 中设置子级的属性
标签: typescript vue.js vuejs2 html-select bootstrap-vue