ich ein paar Strecken in meinem vuejs SPA haben, die ich unter Verwendung der vue-Router einrichten:Navigating SPA über Routen vuejs die Komponente nicht teilt Komponentendaten aktualisieren, wie erwartet
- /create/Feedback
- /edit/Feedback-/66a0660662674061b84e8ea2fface0e4
für jede Route die Komponente ist die gleiche Form mit etwas Smarts Form Werte basierend auf der Abwesenheit oder Gegenwart der ID in der Route (feedbackID, in meinem Beispiel) zu ändern.
Ich stelle fest, dass wenn ich von der Bearbeitungsroute auf die Create-Route klicke, die Daten in meinem Formular nicht gelöscht werden.
ist Unterhalb der Kern meiner Route Datei
import FeedbackFormView from './components/FeedbackForm.vue'
// Routes
const routes = [
{
path: '/create/feedback',
component: FeedbackFormView,
name: 'FeedbackCreate',
meta: {
description: 'Create Feedback',
}
},
{
path: '/edit/feedback/:feedbackId',
component: FeedbackFormView,
name: 'FeedbackEdit',
meta: {
description: 'Edit Feedback Form'
},
props: true
}
]
export default routes
Unterhalb der Kern meiner Komponente
<template lang="html">
<div>
<form>
<input v-model="model.someProperty">
</form>
</div>
</template>
<script>
export default {
data() => ({model: {someProperty:''}}),
props: ['feedbackId'],
created() => {
if (!this.$props['feedbackId']) {
return;
}
// otherwise do ajax call and populate model
// ... details omitted
}
}
</script>
Allerdings, wenn ich meine Komponente wie folgt ändern, alles funktioniert wie
erwartet<template lang="html">
<div>
<form>
<input v-model="model.someProperty">
</form>
</div>
</template>
<script>
export default {
data() => ({model: {someProperty:''}}),
props: ['feedbackId'],
created() => {
if (!this.$props['feedbackId']) {
return;
}
// otherwise do ajax call and populate model
// ... details omitted
},
watch: {
'$route' (to, from) {
if (to.path === '/create/feedback') {
this.model = {}
}
}
}
}
</script>
Warum ist das? Warum brauche ich Uhr?
Ich hätte aber, dass wechselnde Routen ausreichen würden, wie der Zweck des Routings ist das semantische Verhalten der Seitennavigation
Ja, das Verhalten ist, wie Sie beschrieben. Wie ich sie verstehe, sollen Routen die traditionelle mehrseitige Webnavigation nachahmen (d. H. Dem Benutzer die Erfahrung vermitteln, zwischen Seiten zu navigieren). Sicher, wenn ein Benutzer von Bearbeiten auf Erstellen klickt, würde er erwarten, dass sich das Formular ändert. Ich hatte gedacht, dass ein Router dieses Verhalten einkapseln würde. Nein? – Jordan
Nein, bis eine andere Route mit einer anderen Komponente aufgerufen wird, @ Jordan –