Как сообщить главному компоненту Vue, что пользователь зарегистрировался?
Как сообщить главному компоненту Vue (в моем случае это App.vue) что пользователь зарегистрировался (я использую vue-router)?
App component:
<template>
<div id="app">
<Nav v-bind="isLogin" @authenticate="auth" ref="nav"></Nav>
<router-view></router-view>
</div>
</template>
<script>
import Nav from "./components/parts/Nav";
export default {
name: 'App',
data(){
return{
isLogin:false
}
},
components: {
Nav
},
methods:{
auth(){
alert('ok')
}
}
}
</script>
Nav component:
<template>
<div>
<ul class="bg-info">
<li>
<router-link to="/">Home</router-link>
</li>
<li>
<router-link to="/login">Login</router-link>
</li>
<li v-if="!isLogin">
<router-link to="/signUp">SignUp</router-link>
</li>
</ul>
</div>
</template>
<script>
export default {
name: "Nav",
props:[
'isLogin'
]
}
</script>
SignUp component:
<template>
<div>
<section id="signUp">
<form @submit.prevent="login" id="login-form">
<div class="form-group">
<label for="">first name</label>
<input type="text" name="fname" required value="name" class="fname">
</div>
<div class="form-group">
<label for="">last name</label>
<input type="text" name="sname" required value="sname" class="sname">
</div>
<div class="form-group">
<label for="">email</label>
<input type="email" name="email" value="[email protected]" class="email">
</div>
<div class="form-group">
<label for="">password</label>
<input type="password" name="password" required value="123123" class="password">
</div>
<button class="btn btn-secondary">Save</button>
</form>
</section>
</div>
</template>
<script>
import $ from 'jquery';
export default {
name: "SignUp",
data(){
return {
vue_this:this
}
},
methods:{
login: function (){
const vue_this = this;
$.post({
url:'http://api/api/users',
dataType: 'json',
data:{
fname: $('.fname').val(),
sname: $('.sname').val(),
email: $('.email').val(),
password: $('.password').val(),
},
success:function(res){
if (res.response.status === 'success'){
vue_this.$router.push('/profile/12')
}
},
error:function (error){
console.log(error)
}
})
}
}
}
</script>