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

标签 javascript angularjs firebase-authentication angularjs-service

我有一个将参数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/

相关文章:

javascript - 如何从 import.io API 获取数据?

javascript - HTML 中的 $scope 变量在刷新时消失

javascript - 如何使用 Angular JS 为碳设计系统模式添加条件?

android - Firebase 自定义身份验证错误 : The custom token format is incorrect

Angular 5 canActivate重定向到浏览器刷新登录

javascript - node.js promise 错误未定义函数

Javascript 测试方法不起作用(如预期的那样)

javascript - 使用Angularfire(firebase)需要注册账号吗?

javascript - 与 webpack 捆绑时,react-router-dom 项目因 publicPath 而中断

javascript - 自定义验证无法使用 Angular Js 工作