【问题标题】:Reset radio button in Vue componentVue组件中的重置单选按钮
【发布时间】:2018-11-13 17:53:22
【问题描述】:

我正在使用 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,但单选输入不会更改为第一个(默认)元素。

所以,我需要的是在重置值时,下拉组件进入初始状态,这意味着选择了第一个(默认)单选选项。

代码在我将其放入组件之前一直正常工作,所以我猜这是道具传播的问题

【问题讨论】:

  • 您的问题不清楚
  • 我更新了问题试图更清楚

标签: javascript vue.js


【解决方案1】:

你需要注意 props 的变化,因为 props 不是响应式的......

watch:{
    val:function(val) {
        this.$emit('input', val);
    },
    list:function(list) {
        //Add your code here!
    }
}

【讨论】:

  • 我没有意识到道具不是反应性的。这就是问题所在!谢谢!
猜你喜欢
  • 1970-01-01
  • 2023-02-03
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 2020-10-08
相关资源
最近更新 更多