Я просмотрел несколько ресурсов, но не нашел решения:
- https://vuejs.org/v2/guide/computed.html
- V-модель с реквизитами и вычисленными свойствами
- v-модель vuejs, несколько флажков и вычисленное свойство
У меня есть таблица с людьми, у которых есть роли, если я хочу изменить роли, я открываю модальное окно.
<template>
<div>
<b-table small outlined striped hover :items="peoplePaginated.data" :fields="fields" >
<template slot="actions" slot-scope="row">
<b-button size="sm" class="my-2 my-sm-0 btn-outline-info" v-b-modal="'federation-role-modal'" @click.stop="change(row.item)">
edit
</b-button>
<b-button size="sm" @click.stop="info(row.item, row.index, $event.target)" class="btn btn-outline-success btn-sm">
details
</b-button>
</template>
</b-table>
<FederationRoleModal :roles="roles" />
</div>
</template>
data () {
return {
roles: [],
}
},
methods: {
info (item) {
this.$router.push({ name: 'person', params: { id: item.id }})
},
change (person) {
const roles = person.personRoles.map(el => el)
const allRoles = roles.map(el => el.roleCategory.name)
this.roles = allRoles
}
}
Затем у меня есть список флажков, где checkedRoles
устанавливает отмеченные. Когда я устанавливаю новый флажок, я хочу, чтобы свойство данных обновлялось. Однако этого обновления не происходит.
В модальном режиме:
<span v-for="value in allRoles" :key="value.id">
<input type="checkbox" :value="value" v-model="checkedRoles">
<span class="checkbox-label"> {{value}} </span> <br>
</span>
computed property: {
checkedRoles: {
get: function () {
// console.log(this.roles)
return this.roles
},
set: function (newValue) {
// console.log(newValue)
return newValue
}
}
}
this.roles
происходит от родительского компонента (массива с ролями). Я вижу вывод console.log(newValue)
как новый массив с дополнительной ролью, но этот новый массив не отображается как свойство данных checkedRoles
.
- [вариант 2] Я также пытался добавить
checkedRoles: this.roles,
вdata () { return {... }
. Но когда я открываю модальное окно несколько раз, роли предыдущегоrow.item
, по которому щелкнули, все еще находятся в свойстве data.
пожалуйста, порекомендуйте
если мне нужно использовать вычисляемое свойство, или углубиться в [вариант 2]
как получить все отмеченные флажки в свойстве данных
checkedRoles
.