Я застрял в создании CheckBoxGroup с массивом проп в качестве v-модели. Я прочитал руководство vuejs: https://vuejs.org/v2/guide/forms.html#Checkbox, в котором есть массив v-модели в данных того же компонента, но, очевидно, это бесполезно, если я хочу сделать этот компонент многоразовым и вставить v-модель с помощью реквизита и, например, установите флажки «снаружи». Поэтому я попробовал следующее:
CheckBoxgroup. vue
<template>
<div>
<label v-for="day in allDays" :key="day">
<input v-model="checkedDays" type="checkbox" :value="day" />
<span>{{ day }}</span>
</label>
<div>Checked days: {{ checkedDays }}</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue'
import { Component, Prop } from 'vue-property-decorator'
@Component
export default class CheckBoxGroup extends Vue {
@Prop() checkedDays!: string[]
@Prop() allDays!: string[]
}
</script>
Index. vue
<template>
<div>
<checkbox-group :checked-days="checkedDays" :all-days="allDays" />
</div>
</template>
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator'
import CheckboxGroup from './checkBoxGroup.vue'
@Component({
components: { CheckboxGroup },
})
export default class Index extends Vue {
// This list would usually come from an API
allDays = ['Monday', 'Tuesday', 'Wednesday']
checkedDays = ['Monday']
}
</script>
Таким образом, код работает почти нормально, но я получаю
[Vue warn]: избегайте прямого изменения свойства, так как значение будет перезаписываться всякий раз, когда родительский компонент перерисовывает ...
Есть ли способ обойти это? Любая помощь будет оценена.