我需要从Vuetify 数据表中删除一个项目(行) 。我将数据表的 prop 绑定到使用fromitems
调用的计算变量。screens
mapState
vuex
<v-data-table
ref="dataTable"
v-bind:headers="headers"
v-bind:items="screens"
v-bind:search="search"
:loading="loading"
>
<template slot="items" slot-scope="props">
<tr @click="props.expanded = !props.expanded">
<td>{{ props.item.name }}</td>
<!-- etc -->
</tr>
</template>
<template slot="expand" slot-scope="props">
<screen-edit-form :screen-data="props.item"></screen-edit-form>
</template>
<template slot="pageText" slot-scope="{ pageStart, pageStop }">
From {{ pageStart }} to {{ pageStop }}
</template>
</v-data-table>
...
来自计算变量的片段
/**
* Automated the fetching of screen data.
*/
computed: mapState( {
screens: state => state.Screens.data
} ),
突变vuex
/**
* Create an unset function using Lodash
* @param state
* @param payload
*/
unsetById: ( state, payload ) => {
// Remove the item
_.remove( state.data, { id: payload.id } );
// Emit an event to the event bus
EventBus.$emit( 'screen-deleted' );
}
数据表使用一个名为的模板槽items
,其槽范围名为props
. 但是,每当我 mutate 时screens
,我可以看到items
数组已正确更改(我从屏幕数组中删除的项目确实已经消失了)但我对 DOM 没有反应。
我从文档中知道,如果我想要双向绑定,我需要同步道具。我尝试.sync
在 the 上使用修饰符并使用无济于事v-bind:items
发出更改。this.$refs.dataTable.$emit( 'update:items', this.screens );
任何有关使用插槽道具获得双向绑定的帮助将不胜感激。最终目标是能够从数据表中删除项目并将其立即反映在 DOM 上。
谢谢。