我对Vue.js还是很陌生,谢谢您的理解。我设置了一个Vue项目,在这里我要向患者显示患者及其数据。我想从一开始就告诉我我不打算使用Vuex:)
我的项目有3层。
我在其中导入数据的Home.vue文件(患者)
下一层是Patient.vue组件,其中有一个for循环并输出所有患者。在这种情况下,我将通过使用道具来获得耐心的数组。
最后一层称为ViewPatient.vue视图。我要在这里显示被点击的患者的更多详细信息。例如,我想继承名称以再次调用端点以检索患者的一些观察结果。例如:端点/患者/(theName)
我尝试了许多不同的方法:事件总线,动态路由器和数据访问。
Home.vue
<template>
<div class="container">
<keep-alive>
<Patients :PatientsData="PatientsData" />
</keep-alive>
</div>
</template>
<script>
// @ is an alias to /src
import PatientsData from "../data/messages";
import Patients from "../components/Patients.vue";
export default {
name: "home",data() {
return {
PatientsData: PatientsData
};
},components: {
Patients
}
};
</script>
Patients.vue(组件)
<template>
<div v-if="PatientsData.length > 0">
<div class="row row-eq-height">
<div v-for="PatientData in PatientsData" class="col-12 col-sm-6 col-md-3 mb-3" :key="PatientData.content" :data-id="PatientData.content" @click.prevent="passpatientData" >
<router-link to="/patient" >
<div class="col-12 patientsTiles p-4">
<p class="patientsname">
<span>Navn</span>
{{ PatientData.content }}
</p>
<p class="patientsCPR">
<span>CPR.nr</span>
{{ PatientData.subject }}
</p>
<p class="patientsAge">
<span>Alder</span>
{{PatientData.age}}
</p>
<i :class="['fa','fa-star',{important: PatientData.isImportant}]"></i>
</div>
</router-link>
</div>
</div>
</div>
</template>
<script>
import router from "../main";
import { eventBus } from "../main";
export default {
props: {
PatientsData: Array,},data(){
return{
patientName: ""
}
},methods: {
passpatientData() {
this.patientName = this.PatientData;
alert(this.patientName);
eventBus.$emit("passpatientData",this.patientName);
}
}
};
</script>
ViewPatient.vue(视图)
<template>
<div class="container">
<h1>The Patient detail</h1>
</div>
</template>
<script>
// @ is an alias to /src
import { eventBus } from "../main";
export default {
props: {
// patientId:{
// type: String
// }
},data() {
return {
selectedPatient : ""
};
},created() {
eventBus.$on("passpatientData",data => {
this.selectedPatient = data;
// console.log("yeaah");
})}
}
</script>
IMO,问题出在passpatientData函数上。 this.PatientData为空,我不知道如何将单击的元素的数据传递给空字符串(this。PatientName),因此我可以将其发送到事件总线
passpatientData() {
this.patientName = this.PatientData;
alert(this.patientName);
eventBus.$emit("passpatientData",this.patientName);
}