vue.js - 加载组件时如何检索数据
问题描述
我有一个项目列表,我想在下一页的模态中显示单击项目的名称,当我单击其中一个时,它会毫无问题地加载并在我的模态中显示关联名称。
但是问题来了,当我重新加载这个项目页面时,它会抛出一个错误“无法读取未定义的属性'asso_id'”
我通过它的 id 和 getter 获取项目以检索项目对象中的 asso_id,然后使用这个 asso_id 与我的关联通过 id getter 来获取相关关联。
我认为这是因为我的组件没有尽快检索到 AssociationTitle。
这是我的代码
computed: {
"getProjectById",
"getAssociationById"
]),
project() {
const projectId = this.$route.params.id;
return this.getProjectById(projectId);
},
associationTitle() {
const project = this.project;
const association = this.getAssociationById(project.asso_id);
return association.title;
}
}
getters: {
getProjects: state => {
return state.projects = [...ProjectData.ProjectData];
},
getProjectById: state => id => {
return state.projects.find(project => project._id === id);
},
getAssociations: state => {
return state.associations = [...AssociationData.AssociationData];
},
getAssociationById: state => id => {
state.associations = [...AssociationData.AssociationData];
return state.associations.find(association => association._id === id);
}
}
<v-card-title class="headline grey lighten-2" primary-title> {{ associationTitle }} </v-card-title>
解决方案
我想你猜对了。你可以检查你是否有项目,例如
associationTitle() {
const project = this.project;
const title = project ? this.getAssociationById(project.asso_id).title : '';
// or typeof project !== 'undefined' or something similar
return title;
}
推荐阅读
- python - 如何通过在它们之间画线来连接两个 QGraphicsItem(使用鼠标)
- sql - ScalikeJDBC 如何通过聚合函数对查询进行排序?
- c# - 一旦光线投射不再在对象上,如何禁用组件?
- node.js - 类型“对象”不满足约束“文档”
- powershell - Powershell DFS 目标列表
- node.js - 在 jsons postgres typeORM 节点 js 的数组中查找
- php - 如何通过 PHP 对日期数组进行排序?
- php - 用两个变量填充动态下拉列表
- c# - 为什么 ReSharper 在内联函数中声称“表达式始终为真”,但在方法中却没有?
- acumatica - Acumatica 将列添加到文件对话框网格