通过Vuex存储中的axios获取单个记录

时间:2018-06-21 15:11:09

标签: vuejs2 vuex nuxt.js vuex-modules

我想使用Nuxt中的Vuex存储模块从后端返回一条记录。

我的组件中包含以下内容,该内容传递了我想要的值 (这是$ route.params.caseId)

svgjs

我将$ route.params.caseId传递给vuex存储模块中的getCase操作,如下所示

dataURL

convert情况是从firebase密钥中提取id并将其作为id字段添加到我的数组中(以这种方式对firebase中的单个结果正确吗?)

我的突变

const obj = {'0': 'data0', '1': 'data1'},
    exist = Object.values(obj).indexOf('data1') > -1;

console.log('exist:', exist);

现在,当我使用

案例名称:{{caseId.case_name}}

我没有得到任何结果,

虽然我没有收到任何错误消息,但对我在做什么的任何想法请

非常感谢

1 个答案:

答案 0 :(得分:0)

您可以像在分派方法中一样将更多数据传递给操作,然后再正常访问它们。

请注意getCase函数的data参数,在您的示例中data === $ route.params.caseId

//加载单个调查

getCase ({ commit, context }, data) {
  return axios.get('http' + investigationID + '.json')
  .then(res => {
    const convertcase = []
    for (const key in res.data) {
      convertcase.push({ ...res.data[key], id: key })
    }
    commit('GET_CASE', convertcase)
  })
  .catch(e => context.error(e));
},

如果您要使用Promise,请查看下面我的应用中获取单个BLOG_POST的操作的示例

let FETCH_BLOG_POST = ({commit, state}, { slug }) => {

    return new Promise((resolve, reject) => {

        fetchBlogPost(slug, state.axios)
        .then((post) => {
            console.log("FETCH_BLOG_POSTS", post.data.data)
            commit('SET_BLOG_POST', post.data.data)
            resolve(post.data)
        })
        .catch((error) => {
            console.log("FETCH_BLOG_POST.catch")
            reject(error)
        })

    });
}