2017-10-12 116 views
2

我有一个使用复选框的过滤器列表。我试图让每个复选框都是自己的组件。所以我循环遍历我的过滤器列表,为每个过滤器添加一个复选框组件。 Vue.js documentation表示如果我有多个使用相同模型的复选框,数组将使用复选框的值进行更新。如果这组复选框是父组件的一部分,我就会看到这个工作。但是,如果我使复选框成为一个组件并在循环中添加每个复选框组件,那么该模型不会按预期更新。Vue.js复选框组件多个实例

我怎样才能有一个复选框组件更新父级的数组?我知道我可以通过为组件上的方法发布事件来更新数组,但Vue文档使框架看起来像是为你做的。

下面是一个代码示例中,我一直在玩弄https://www.webpackbin.com/bins/-KwGZ5eSofU5IojAbqU3

+1

请在邮件中添加相关代码,而不仅仅是链接。 – thanksd

回答

2

这里是一个工作版本。

<template> 
    <div class="filter-wrapper"> 
    <input type="checkbox" v-model="internalValue" :value="value"> 
    <label>{{label}}</label> 
    </div> 
</template> 

<script> 
    export default { 
    props: ['checked','value', 'label'], 
    model: { 
     prop: "checked" 
    }, 
    computed:{ 
     internalValue: { 
     get(){return this.checked}, 
     set(v){this.$emit("input", v) } 
     } 
    } 
    } 
</script> 

更新bin

+0

太棒了,谢谢你。请让我知道,如果我理解这是如何工作的。您正在为组件创建内部模型,并将其设置为从父项传入的模型的值。我正确理解这一点吗? –

+0

@MichaelTurnwall你明白了。当内部模型发生变化时,变化就会发送给父项。 – Bert