Vuejs2 V-FORM from";计算的;不';我没有出现

Vuejs2 V-FORM from";计算的;不';我没有出现,vuejs2,computed-properties,v-for,Vuejs2,Computed Properties,V For,我在模板中使用v-for来显示计算属性的列表。但是,即使刷新时它也能工作,但当我第一次进入页面时,我看不到列出的项目。如果我为我的联系人设置了v,则无法进行筛选 因此,我的数据和计算方法如下所示: export default { data() { return { contacts: this.$store.getters.loadedContacts, search: "" }; }, computed: { filte

我在模板中使用v-for来显示计算属性的列表。但是,即使刷新时它也能工作,但当我第一次进入页面时,我看不到列出的项目。如果我为我的联系人设置了v,则无法进行筛选

因此,我的数据和计算方法如下所示:

export default {
    data() {
      return {
       contacts: this.$store.getters.loadedContacts,
       search: ""
      };
    },
computed: {
  filterContacts(contacts) {
    return this.contacts.filter(contact => {
      return contact.name.toLowerCase().match(this.search.toLowerCase());
    });
  }   
};
我在HTML中这样调用它(filterContacts):


{{contact.name}
{{contact.position}}
所以实际的问题是:为什么需要刷新我的页面才能看到for循环的结果?
如果我不调用filterContacs,我将无法使用我的筛选器

如何解决过滤和v-for循环问题,有什么建议吗

如果这是一个新手,谢谢你,对不起!
非常感谢任何帮助

组件的数据在创建时设置。存储中的getter可能还没有返回任何数据

您可以将计算机中的
this.contacts
安全地替换为
this.$store.getters.loadedContacts

您还可以选择使用vuex的
mapGetter
helper,这可能更为优雅。它会将vuex getter映射到组件的computed属性(请参阅此处的详细信息:)

使用MapGetter,您将:

...mapGetters({
  contacts: 'loadedContacts'
})

然后从数据声明中删除联系人

谢谢!我真的注意到了你说的话。实际上,通过将
this.contacts
替换为
this.$store.getters.loadedContacts
解决了我的问题。我还从data()中删除了“联系人”


谢谢

尝试将
this.contacts.filter
替换为
this.$store.getters.loadedContacts
。此外,您可以在不同的位置添加虚拟数据以查看其下降的位置。
...mapGetters({
  contacts: 'loadedContacts'
})