javascript - Vue组件中的重置单选按钮
问题描述
我正在使用 Vue 组件来创建下拉选择输入。这是组件的代码:
export default {
name:"dropdown",
template:`
<div class="select">
<ul>
<li><label><input type="radio" v-model="val" :value="init" disabled checked><span>{{placeholder}}</span></label></li>
<li v-for="item in list"><label><input type="radio" v-model="val" :value="item.value" /><span>{{item.name}}</span></label></li>
</ul>
</div>`,
props: {
list: { type:Array, required:true },
placeholder: { type:String, default:"Select" },
value: { required:true }
},
data:function() {
return {
val:this.value
}
},
computed:{
init:function() {
return this.list[0].value instanceof Object ? null : '';
}
},
watch:{
val:function(val) {
this.$emit('input', val);
}
}
};
然后我可以在页面中使用它:
<dropdown :list="RESOURCES" v-model="add.resource" placeholder="Select resource" class="input-x2"></dropdown>
第一个(默认)选项为空(如果列表由对象组成,或者如果由字符串组成,则为“”)。选择任何其他选项时,值会更改。我最终更改了父组件(示例中的 add.resource)的绑定值,将其重置为 null,但无线电输入不会更改为第一个(默认)元素。
所以,我需要的是在重置值时,下拉组件进入初始状态,这意味着选择了第一个(默认)单选选项。
代码在我将其放入组件之前一直正常工作,所以我猜这是道具传播的问题
解决方案
你需要观察props
变化,因为道具不是反应性的......
watch:{
val:function(val) {
this.$emit('input', val);
},
list:function(list) {
//Add your code here!
}
}
推荐阅读
- java - Android Studio 控制台不允许我向扫描仪输入输入
- java - LoadBalancer 背后的 OAuth2 授权
- javascript - 循环遍历元素并更改类
- vue.js - v-tabs:使用箭头更改选项卡
- c++ - C2440 使用 Shared_ptr 创建二维数组
- r - 如何在ggplot中手动创建线型?
- node.js - 使用猫鼬获取节点计数的动态查询?
- python - 是否存在不可变的类字典对象?
- ios - 最新的 ios 版本未在 Testflight 下显示
- react-native - 有没有办法让 Google Assistant 与 React Native App 一起工作