Это хороший пример использования пользовательских событий Vue . Я бы обновил ваш код следующим образом:
# login-template
...
<div class="login-footer">
<slot name="footer">
<div class="change-mode">
<button class="change-mode-reg" @click="changeModal">Sign up</button>
<div class="change-mode-line"></div>
</div>
</slot>
</div>
...
компонент входа
Vue.component('login', {
template: '#login-template',
data() {
return {
loginInput: '',
passwordInput: ''
}
},
methods: {
sendRequest(e) {
//code not here
},
changeModal() {
this.$emit('change');
}
}
});
# app
<div id="app">
<login v-if="showLogin" @close="showLogin = false" @change="changeModal"></login>
<signup v-if="showSignup" @close="showSignup = false"></signup>
</div>
Вот обновленная скрипка .
( ПРИМЕЧАНИЕ : похоже, вы могли бы иметьнекоторые другие проблемы, происходящие здесь, но это исправляет вашу проблему переключения мод.)