Vue.js 如何在Vue和Vuex中正确绑定表单-v-model的差异,:value&:value.sync
我是Vue&Vuex的新手,不确定如何正确设置表单Vue.js 如何在Vue和Vuex中正确绑定表单-v-model的差异,:value&:value.sync,vue.js,vuex,nuxt.js,Vue.js,Vuex,Nuxt.js,我是Vue&Vuex的新手,不确定如何正确设置表单 <template> <div> <div v-if="error">{{error.message}}</div> <form @submit.prevent> <h1>Register</h1> <input type="email" name="" id="" :
<template>
<div>
<div v-if="error">{{error.message}}</div>
<form @submit.prevent>
<h1>Register</h1>
<input type="email" name="" id="" :value.sync="email" placeholder="Email">
<input type="password" :value.sync="password" placeholder="Password">
<button @click="signup">Submit</button>
<a href="login">Sign in</a>
</form>
</div>
</template>
<script>
import {fireAuth} from '~/plugins/firebase.js'
export default {
data: () => ({
email: '',
password: '',
error: ''
}),
methods: {
signup() {
fireAuth.createUserWithEmailAndPassword(this.email, this.password).then(res => {
if (res) {
this.$store.commit('setCurrentUser', res.user)
this.$router.push('/')
}
}).catch(err => {
this.error = err
console.log(err)
})
}
}
}
</script>
Vue.config.devtools=false
Vue.config.productionTip=false
const vm=新的Vue{
el:应用程序,
资料{
返回{
电邮:,
密码:
}
},
方法:{
报名{
console.logthis.email//电子邮件值
console.logthis.password//密码值
}
}
}
登记
我想我已经找到了解决办法,这就是我尝试使用firebase的方式。我使用了v-model,但我在AuthStateChanged上使用了firebase方法,只有调用了该方法,我才会更改存储。因此,在我的firebase.js中,我添加了
const fireAuth = firebase.auth()
const fireDb = firebase.database()
export { fireAuth, fireDb }
export default async ({ store }) => {
await asyncOnAuthStateChanged(store)
}
function asyncOnAuthStateChanged (store) {
return new Promise(resolve => {
fireAuth.onAuthStateChanged(user => {
resolve(user)
store.commit('setCurrentUser', JSON.parse(JSON.stringify(user)))
})
})
}
你能把你的商店寄出去吗?v-model=email和v-model=password将其绑定到不会抛出错误的数据对象的组件状态。我猜当你把res.user传递给setCurrentUser时,你的麻烦就在这里。将代码发布到应用商店,我们可以从那里开始。谢谢,我刚刚为您更新了代码,只是为了确保,您是否正在尝试在应用商店的输入之间进行同步?不,我只需要使用输入的值,就可以发送到firebase,然后我将使用firebase提交到应用商店的内容。我认为我解释得很糟糕,这突出了我自己对这一点的理解不足,并且认为我可能把我试图实现的目标过于复杂化了?对不起,我不确定我是否理解这有什么帮助,我没有尝试存储表单中的值,因此我不需要将它们提交到存储。因此,由于数据只需要在这个页面上,我已经尝试只处理电子邮件和密码在这里。除非我对数据用途的理解是错误的?对不起,我不理解,更新后,v型工作正常
const fireAuth = firebase.auth()
const fireDb = firebase.database()
export { fireAuth, fireDb }
export default async ({ store }) => {
await asyncOnAuthStateChanged(store)
}
function asyncOnAuthStateChanged (store) {
return new Promise(resolve => {
fireAuth.onAuthStateChanged(user => {
resolve(user)
store.commit('setCurrentUser', JSON.parse(JSON.stringify(user)))
})
})
}