我正在努力使用Vue.js从子组件中获取数据。我有父组件,我需要在其中呈现数据,并且在子组件中,该数据是可选择的引导表。到目前为止,我所做的是:父组件:
import Permissions from '../components/User/PermissionsList'
created() {
Permissions.fetchData()
},
data() {
return {
selectedPermissions: Permissions.data,
}
}
这实际上是有效的,但是当我选择chid组件中的某些行时,它没有更新。这就是我的子组件的外观。
<template>
<div>
<b-card title="Permissions">
{{selectedPermission}}
<div>
<!-- Example scoped slot for select state illustrative purposes -->
<template #cell(selectedPermission)="{ rowSelected }">
<template v-if="rowSelected">
<i class="feather icon-disc primary" />
</template>
<template v-else>
<i class="feather icon-circle" />
</template>
</template>
<template #cell(flag)="data">
<b-avatar :src="data.item.flag" />
</template>
<template #cell(status)="data">
<b-badge :variant="status[1][data.value]">
{{ status[0][data.value] }}
</b-badge>
</template>
</b-table>
</div>
</b-card>
</div>
</template>
<script>
import {
BRow,
BCol,
BTable,
BButton,
BCard,
} from 'bootstrap-vue'
import Ripple from 'vue-ripple-directive'
import Api from "@/store/Api";
export default {
components: {
BTable,
BRow,
BCol,
BCard,
BButton,
},
directives: {
Ripple,
},
data() {
return {
selectMode: 'multi',
availablePermissions: [],
selectedPermission: [],
permissionsFields: [{
key: 'id',
label: 'id',
thClass: 'd-none',
tdClass: 'd-none'
}, {key: 'subject', label:'subject', thClass: 'd-none' }, {key: 'action', label:'action', thClass: 'd-none' }],
}
},
mounted() {
return new Promise((resolve, reject) => {
Api().get("/permissions/list").then(response => {
this.availablePermissions = response.data.data;
})
.catch(error => {
console.log('Something bad happeneds')
});
resolve(true)
})
},
methods: {
onRowSelected(items) {
this.selectedPermission = items
},
selectAllRows() {
this.$refs.selectableTable.selectAllRows()
},
clearSelected() {
this.$refs.selectableTable.clearSelected()
},
},
}
</script>
很明显,问题出在父组件上,我试图将创建更改为更新,但它不起作用。有什么建议吗?
发布于 2021-05-12 19:48:05
您可以使用子组件上的emit
来发出对父元素的更改,并添加自定义事件的侦听器以对更改做出反应。例如,您可以在子组件上放置this.$emit('dataUpdated')
并添加<Component @dataUpdated="doSomething" />
https://stackoverflow.com/questions/67502550
复制相似问题