我有一个 vue 引导表,在每一行中显示数组对象的几个属性(通过 axios 的 api 调用获得)。
每行都有一个按钮,可以将我重定向到详细信息页面,该页面包含该对象的更多属性以及地图。
我正在考虑创建一个函数来获取单击行中包含的对象的属性 id,但我不确定如何去做。我需要 id 才能在 api 调用的最后部分使用它。
商店的结构使我有一个用于用户的模块和另一个用于这些对象(活动)的模块。在这些模块中,我处理状态、动作和突变。一个单独的文件处理 getter。由于这些活动将被修改,我也需要保存它们的状态。
我还需要能够从其他组件轻松访问单个对象的所有属性(不仅是表格行中显示的属性)。
我变得非常困惑。
这里的代码:
包含所有活动的表格:
<b-table
responsive
:fields="fields"
:items="activity"
>
<template
slot="actions"
>
<b-button
v-b-tooltip.hover
title="Mostra dettagli"
variant="info"
class="px-3"
@click="goToActivityDetail"
>
<span class="svg-container">
<svg-icon icon-class="search"/>
</span>
</b-button>
</template>
</b-table>
在脚本中:
export default {
name: 'AllActivities',
data() {
return {
fields: [
{ key: 'activity.activityName', label: 'Activity', _showDetails: true},
{ key: 'related_activity', label: 'Related activity', _showDetails: true},
{ key: 'start', label: 'Start', _showDetails: true },
{ key: 'end', label: 'End', _showDetails: true },
{ key: 'travel_mode', label: 'Travel mode', _showDetails: true },
{ key: 'actions', label: '' }
],
activity: [],
methods: {
getIdActivity(){
**?? how to get it ??**
},
goToActivityDetail() {
this.$router.push({
name: 'activityDetail'
})
}
}
goToActivityDetail()
显然不起作用,在控制台中:
- [vue-router] missing param for named route "activityDetail": Expected "activityId" to be defined
- [vue-router] missing param for redirect route with path "/see-all-activities/:activityId": Expected "activityId" to be defined)
在吸气剂文件中,我有:
const getters = {
sidebar: state => state.app.sidebar,
device: state => state.app.device,
token: state => state.user.token
}
export default getters
所以在这里我需要有类似的东西:
activityId: state => state.activity.activityId
来自activity.js,即:
import {
getActivityId
} from '@/components/AllActivities'
const state = {
activityId: getActivityId()
}
const mutations = {
SET_ACTIVITY_ID: (state, activityId) => {
state.activityId = activityId
}
}
const actions = {
setActivityId({
commit
}) {
return new Promise(resolve => {
commit('SET_ACTIVITY_ID', '')
resolve()
})
}
}
export default {
namespaced: true,
state,
mutations,
actions
}
如果这是正确的,那么剩下的就是获取单击的表行中包含的对象的 id 的函数。另外,如何在 api 调用 (axios) 中写入该活动 ID?我现在有:
export function getSingleActivity() {
return request({
url: 'http://localhost:8000/api/user_activity/:activityId',
method: 'get'
})
}
但我不确定这是否正确。另外,如何访问其他属性(显示在 detailActivity 页面中)?这将由一些属性的列表(可能是堆叠表组件)和地图组件组成,因此我需要访问这两个组件中的属性。我希望我已经足够清楚了,谢谢。