【问题标题】:Get data from an Array in VueVue中从数组中获取数据
【发布时间】:2018-05-08 03:08:25
【问题描述】:

现在,在我的页面中显示的数据是一个数组,如下面的 sn-p:

但我只想获取或显示项目名称。

这是我现在唯一拥有的:

fetch(context,id){
        if(context.getters['isEmpty']){
            Vue.api.mediasetting.index()
                .then(response=>{
                    var medias = response.data[key];

                    context.commit('setMedias',medias);
                    // console.log("init medias", medias[0].project_name)
                },response=>{

                });
        }
    },

我可以在此处应用过滤器吗?如何应用?谢谢。

【问题讨论】:

  • 我认为这可能会有所帮助stackoverflow.com/questions/49485030/…
  • @lok​​i 我之前已经看过了,据我所知,他们只是在获取一个特定的 id。我想要的是获取所有项目名称。无论如何谢谢:)
  • 使用 Object.keys 并过滤“项目名称”。
  • @HarshPatel 我试过这个:context.commit('setMedias',this.medias.filter(function(project){ return project.project_name === project_name; }) 但返回错误:app.js:100445 Uncaught (in promise) TypeError: Cannot read property 'filter' of undefined 你能帮我吗?谢谢。
  • 你能做个小提琴让我直接测试代码吗?

标签: javascript arrays vue.js


【解决方案1】:

取决于您要用于呈现值的 html 元素,您可以使用 v-for directive 来呈现 project_name 值:

<template>
  <ul id="example">
    <li v-for="(media) in medias">
      {{ media.project_name }}
    </li>
  </ul>
</template>

您将需要从您的商店获取媒体数据,您可以使用computed property 获取它:

<script>
export default {
  computed: {
    medias: function () {
      return this.$store.medias
    }
  }
}
</script>

以上示例假设您使用的是single file component 结构。

【讨论】:

  • 嗯。不幸的是,我没有使用单个文件组件结构。
  • 哦,我明白了,那么它应该是非常相似的,看看这个例子jsfiddle.net/ricardoorellana/mnp0vh4g/3,你需要用你项目中存储的数据更改硬编码数组
  • 好的。我试过了,但没有数据显示了。也尝试过:context.commit('setMedias',this.medias.filter(function(project){ return project.project_name === project_name; }) 但返回错误:app.js:100445 Uncaught (in promise) TypeError: Cannot read property 'filter' of undefined 你对此有什么见解吗?
  • 嗯,很可能您访问了错误的 vuex 状态属性键,检查您的商店属性名称,我的意思是您创建商店实例的位置new Vuex.Store
  • 很高兴您成功了!我建议您分析您的解决方案以使其更好且易于维护。
猜你喜欢
  • 2018-10-26
  • 2021-08-02
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 2020-02-10
  • 2018-10-26
  • 2018-09-16
相关资源
最近更新 更多