gpt4 book ai didi

javascript - angularjs firebase用户身份验证服务不与 View 通信

转载 作者:太空宇宙 更新时间:2023-11-04 16:28:01 25 4
gpt4 key购买 nike

我有一个将参数pseudonym传递到环境的服务。我在我的 View 中调用了这个笔名,但它根本没有出现。
如何修复此问题以在我的 View 中显示该值?

我的用户服务:

app.service('MyUser', ['DatabaseRef', 'firebase', function(DatabaseRef, firebase) {
var pseudonym ="";
var userId = firebase.auth().currentUser.uid;

return {
pseudonym: function() {
DatabaseRef.ref('/users/' + userId).once('value')
.then(function (snapshot) {
pseudonym = snapshot.val().pseudonym;
console.log("pseudony: ", pseudonym);
return pseudonym;
});

}
}
}]);

在我的控制台中,我看到假名的值。但在我看来,html 中不使用 {{pseudonym}}
这是示例 View Controller :

app.controller('ExampleCtrl', ["MyUser",
function (MyUser) {
$scope.pseudonym = MyUser.pseudonym();
}]);

最佳答案

返回由 .then 方法创建的 Promise:

app.service('MyUser', ['DatabaseRef', 'firebase', function(DatabaseRef, firebase) {
//var pseudonym ="";
var userId = firebase.auth().currentUser.uid;

return {
getUserName: function() {
//return promise
return (
DatabaseRef.ref('/users/' + userId).once('value')
.then(function onSuccess(snapshot) {
let pseudonym = snapshot.val().pseudonym;
console.log("pseudony: ", pseudonym);
return pseudonym;
})
);
}
}
}]);

然后从该 promise 中提取值(value):

var app = angular.module('app', []);
app.controller('loginController',['$scope', 'MyUser',function($scope, MyUser)
{
let promise = MyUser.getUserName();
//Extract data from promise
promise.then( function onSuccess(pseudonym) {
$scope.pseudonym = pseudonym;
console.log($scope.pseudonym);
});
}]);

对象的 .then 方法始终返回一个 Promise,该 Promise 源自作为该 .then 方法的参数提供的处理函数返回的值(或 Promise) .

关于javascript - angularjs firebase用户身份验证服务不与 View 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40058330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com