route.params ist nicht definiert, wenn Daten zwischen Komponenten über route.push übergeben werden
<p>Ich möchte Daten von <em>Homepage.vue</em> an <em>clickthru.vue</em> übergeben. </p>
<p>Klicken Sie auf einen Datensatz in der Tabelle (in Homepage.vue)
Ich möchte zu einer neuen Komponente weiterleiten (clickthru.vue).
Das Ziel besteht darin, zwei Arten von Daten auf zwei verschiedene Arten zu übergeben: </p>
<p><strong>Zuerst: </strong>Ich möchte <em>cve_id</em> als route.query übergeben</p>
<pre class="brush:php;toolbar:false;">/clickthru?cve_id=CVE-xxxx-xxxx</pre>
<p><strong>Zweitens: </strong> Ich möchte auch ein Objekt als Parameter zum Rendern/Installieren auf der HTML-Vorlage von clickthru.vue übergeben.该对象看起来像这样:</p>
<pre class="brush:php;toolbar:false;">{ "cve": "CVE-2022-45869", "Schweregrad": "Mittel", "Pakete": [ { " ;Paket": "Kernel", "Version": "5.15.80.1", "Besitzer": "joslobo", "Erkennungsdatum": "12-03-2022", "BranchStatus" : { "1.0": { "sourceBranch": "NULL", "status": "NULL", "detectedOn": "NULL", "patchedOn": "NULL", " ;firstPatchedPackageRelease": "NULL", "fixReleaseDate": "NULL", "aid": "NULL", "qid": [ "NULL" ] }, „2.0“: { „sourceBranch“: „2.0“, „status“: „Unpatched“, „detectedOn“: „12-03-2022“, „patchedOn“: „NULL“, „firstPatchedPackageRelease“: „NULL“, „fixReleaseDate“: „NULL“, „aid“: „11574“, „qid“: [ „Nicht zugewiesen“ ] } } }, { "Paket": "Kernel", "Version": "5.10.155.1", "Besitzer": "joslobo", "Erkennungsdatum": "12-03- 2022“, „BranchStatus“: { „1.0“: { „sourceBranch“: „1.0“, „status“: „Unpatched“, „detectedOn“: „12-03-2022“ , „patchedOn“: „NULL“, „firstPatchedPackageRelease“: „NULL“, „fixReleaseDate“: „NULL“, „aid“: „11573“, „qid“: [ „Nicht Zugewiesen" ] }, „2.0“: { „sourceBranch“: „NULL“, „status“: „NULL“, „detectedOn“: „NULL“, „patchedOn“: „NULL“, „firstPatchedPackageRelease“: „NULL“, „fixReleaseDate“: „NULL“, „aid“: „NULL“, „qid“: [ „NULL“ ] } } } ] }</pre>
<p>在我的<em>homepage.vue</em>
<strong>Homepage.vue</strong></p>
<pre class="brush:php;toolbar:false;"><tbody>
<template v-for="(cve) in backend_res">
<template v-for="(pack_key, index) in Object.keys(cve.packages)">
<tr>
<td>
<span v-if="index == 0" @click.prevent="onAboutClick(cve.cve, cve.packages)">
{{cve.cve}}
</span>
</td>
</tr>
</template>
</template>
</tbody></pre>
<pre class="brush:php;toolbar:false;">methoden: {
onAboutClick(cve_id, cve_obj) {
console.log('----> cve_id = ', cve_id)
console.log('----> cve_obj = ', cve_obj) // cve_obj wurde an dieser Stelle erfolgreich gedruckt
this.$router.push(
{
Name: 'clickthru',
Abfrage: {'cve_id': cve_id},
Parameter: {'cve_obj': cve_obj}
})}</pre>
<p><strong>clickthru.vue</strong></p>
<pre class="brush:php;toolbar:false;"><script>
Standard exportieren {
Requisiten: ['cve_id', 'cve_obj'],
Daten() {
zurückkehren {
cve_id: this.$route.query.cve_id,
cve_obj: this.$route.params.cve_obj, // cve_obj ist undefiniert
};
},</pre>
<p><strong>main.js</strong></p>
<pre class="brush:php;toolbar:false;">constroutes = [
{
Pfad: '/clickthru',
Name: 'clickthru',
Komponente: Clickthru,
Requisiten: stimmt
}
]</pre>
<p>如下所示, 当<em>$route</em></p>
<pre class="brush:php;toolbar:false;">{ "fullPath": "/clickthru?cve_id=CVE-2022-45869", "hash": "", "query" ;: { "cve_id": "CVE-2022-45869" }, "Name": "clickthru", "Pfad": "/clickthru", "params": {}, "matched": [ { "Pfad": "/clickthru", " ;name": "clickthru", "meta": {}, "props": { "default": false }, "children": [], "instances": { "default": null }, "leaveGuards": { "Set(0)": [] }, "updateGuards": { "Set(0)": [] }, "enterCallbacks": {}, " ;components": { "default": { "props": [ "cve_id", "cve_obj" ], „__hmrId“: „91ec59e3“, „__file“: „E:/ASTROLABE_FE/CBL-Mariner-CVE-Website/src/components/clickthru.vue“ } } } ], "meta": {}, "href": "/clickthru?cve_id=CVE-2022-45869" }</pre>
<p>我希望能够传递 cve_obj 而不是 url/path 的一部分
任何关于如何通过参数、元或任何其他方式做到这一点的提示都值得赞赏</p>