Javascript 通过方法不传递变量';我不能在vuejs中工作
我有一个简单的表单,我使用Vue.js和Firebase(带软件包),我有一个方法在Firebase中注册用户,更改Javascript 通过方法不传递变量';我不能在vuejs中工作,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我有一个简单的表单,我使用Vue.js和Firebase(带软件包),我有一个方法在Firebase中注册用户,更改displayName值并注销当前用户,然后我在a中注册一些字段,但我需要保存为保存在firestore中而创建的用户的uid,但是我可以在方法createProvider 我的vuejs组件: import firebase from 'firebase/app'; import { db } from "../firebase"; import "
displayName
值并注销当前用户,然后我在a中注册一些字段,但我需要保存为保存在firestore中而创建的用户的uid,但是我可以在方法createProvider
我的vuejs组件:
import firebase from 'firebase/app';
import { db } from "../firebase";
import "firebase/auth";
export default {
data: () => ({
// item fields
nameProvider:"",
enderecoProvider:"",
numeroProvider:"",
cityProvider: "",
distritoProvider: "",
paisProvider:"",
complementoProvider: "",
telefoneProvider: "",
nomeContatoProvider: "",
emailProvider: "",
passwordProvider: "",
userId: "",
userIdTemp: "",
}),
firestore() {
return {
users: db.collection("users"),
};
},
methods: {
signUp() {
var that = this;
firebase.auth().createUserWithEmailAndPassword(this.emailProvider, this.passwordProvider)
.then((user) => {
// HERE I CREATE THE USER USING FIREBASE AUTH AND I'M TRYNG TO GET THE UID FROM THIS AND STORE IN THE this.userId
this.userId = user.user.uid;
this.authState(); // the method to
})
.catch((error) => {
console.log("ERRO", error);
});
},
authState() {
var that = this;
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
user.updateProfile({
displayName: "2",
});
firebase.auth().signOut().then(() =>{
that.$swal({
icon: "success",
title: "Fornecedor criado com sucesso",
text: "Por motivos de segurança refaça seu login"
}).then((result) => {
if (result.isConfirmed) {
that.$router.replace('/');
location.reload();
}
})
})
console.log(user);
} else {
// No user is signed in.
}
});
},
// this method is in button to register in form, i need to get the userId in signIn method to
createProvider() {
if (this.$refs.providerForm.validate()) {
this.signUp();
this.$firestore.users.add({
nome: this.nameProvider,
telefone: this.telefoneProvider,
email: this.emailProvider,
endereco: this.enderecoProvider,
numero: this.numeroProvider,
cidade: this.cityProvider,
distrito: this.distritoProvider,
pais: this.paisProvider,
complemento: this.complementoProvider,
nomeContato: this.nomeContatoProvider,
nivel: "2",
uid: this.userId, // i need to save in the method signUp() but i can get the value
});
}
},
},
};
我需要将signUp()方法中保存的this.userId值传递给createProvider(),并在firestore中注册。在代码中使用.bind(this)来访问this。但您无法这样做。或者将这个首先分配给某个变量,在调用函数中可以使用该变量
signUp() {
var selfVar = this;
firebase.auth().createUserWithEmailAndPassword(this.emailProvider, this.passwordProvider)
.then((user) => {
// HERE I CREATE THE USER USING FIREBASE AUTH AND I'M TRYNG TO GET THE UID FROM THIS AND STORE IN THE this.userId
selfVar.userId = user.user.uid;
selfVar.authState(); // the method to
})
.catch((error) => {
console.log("ERRO", error);
});
}
或者,如果身份验证调用成功,则直接使用异步函数获取用户信息
async signUp()
{
const user = await firebase.auth().createUserWithEmailAndPassword(this.emailProvider,this.passwordProvider);
if(user){
console.log(user);
}
}
在.then()之后添加代码:alert(JSON.stringify(user))这将显示用户变量的内容,从那里,您应该能够为用户id找到正确的变量名(如果方法返回了它)@Sparky我该怎么做?如何调用
createProvider
?您在createProvider
中看到this.userId
的值是多少?@tony19 createProvider是一个点击按钮事件,您看到了console.log(this.userId)的哪些内容
在该函数中?我确实理解,如何将this.userId传递给另一个方法?我尝试了您的代码,出现了错误错误“bind”未定义没有未定义
您尝试了吗?。然后(user=>(this.userId=user.user.id));此外,我已经更新了.bind位置。希望它现在可以工作。否则,请先将“this”分配给函数外部的某个变量,然后使用该变量。例如var selfVar=this;
和在函数selfVar.userId
中,错误现在是。bind不是函数
`