Я использую Vuejs
в своем проекте, и он отлично работает.
Но сейчас я столкнулся с проблемой.
У меня есть компонент UserForm
, который я использую для чтение пользователей (имя маршрута: UserFormView
) и их создание (имя маршрута: UserFormCreate
). Когда я в форме пользователя, у меня есть кнопка Create Another
, которая должна открыть UserForm
для создания нового пользователя. Дело в том, что, поскольку это один и тот же компонент, кажется, что он используется повторно, и мне нужно сбросить все данные вручную, чтобы получить чистую форму.
Я бы хотел, чтобы она уничтожила текущую форму и перемонтировала вместо этого новый, чтобы мне не пришлось выполнять какой-либо ручной сброс данных ...
Как мне этого добиться?
Я не нашел способа сделать это даже в документация (возможно мое исследование было дерьмом) или в других сообщениях.
Мое приложение. vue:
<template>
<v-app>
<app-header @toggle-sidebar-miniVariant="toggleSidebarMiniVariant()"/>
<app-sidebar ref="sidebar"/>
<app-footer/>
<v-content>
<router-view/>
</v-content>
</v-app>
</template>
Затем два моих маршрута для пользовательской формы:
{ path: '/user/create', name: 'UserFormCreate', component: UserForm, props: true },
{ path: '/user/:userId', name: 'UserFormView', component: UserForm, props: true },
Вы видите, что я использую один и тот же компонент. Поэтому, когда я использую UserFormView
, я хочу получить тот же компонент, но чистый, чтобы иметь возможность создать новый.
<v-btn v-if="!editing && user !== undefined" @click="createAnother()">
<v-icon small class="mr-1">mdi-plus</v-icon>
Create Another
</v-btn>
В настоящее время, чтобы заставить его работать, я делаю это:
createAnother () {
this.resetDefaultData()
this.$router.push({ name: 'UserFormCreate', params: { editing: true } })
},
resetDefaultData () {
Object.assign(this.$data, this.setDefaultData())
},
setDefaultData () {
return {
user: undefined,
groupsUserHasNot: [],
form: {
username: '',
password: '',
firstName: '',
lastName: '',
isActive: true
},
showPassword: false,
selectedGroups: []
}
},
и мои исходные данные ():
data () {
return this.setDefaultData()
},
Заранее спасибо.