angularjs firebase用户认证服务不与视图进行通信 [英] angularjs firebase user auth service not communicating with the views

查看:136
本文介绍了angularjs firebase用户认证服务不与视图进行通信的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个将参数 pseudonym 传递给环境的服务。我在我的视图中调用了这个笔名,但是它根本没有出现。

我该如何解决这个问题来显示我的值浏览?



MyUser服务

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

return {
pseudonym:function(){
DatabaseRef.ref('/ users /'+ userId).once(' ();
.then(函数(快照){
假名= snapshot.val()。假名;
console.log(pseudony:,假名);
return假名;
});

}
}
}]);

在我的控制台中,我看到假名。但不是在我看来HTML使用{{化名}}

,这里是示例视图控制器:



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


解决方案

返回由 .then 方法:

  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')
(函数onSuccess(snapshot){
让假名= snapshot.val()。假名;
console.log(pseudony:,假名);
返回假名;
})
);
}
}
}]);

然后提取该承诺的值:

  var app = angular.module('app',[]); 
app.controller('loginController',['$ scope','MyUser',function($ scope,MyUser)
{
let promise = MyUser.getUserName(); $ b $ (b)从数据库中提取数据
promise.then(函数onSuccess(假名){
$ scope.pseudonym =假名;
console.log($ scope.pseudonym);
});
}]);

一个对象的 .then 方法总是返回一个由处理函数返回的值(或者promise)的promise,作为参数提供给 .then 方法。


I have a service which passes on the parameter pseudonym to the evironment. I call on this pseudonym in my views, but it doesn't appear at all.
How can I fix this to display the value in my views?

MyUser service:

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;
                });

        }
    }
}]);

in my console, I see the value for the pseudonym. but not in my view html using {{pseudonym}}
and here is the example view controller:

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

解决方案

Return the promise created by the .then method:

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;
                })
            );
        }
    }
}]);

Then extract the value from that promise:

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);
    });
}]);

The .then method of an object always returns a promise derived from the value (or promise) returned by the handler function furnished as an argument to that .then method.

这篇关于angularjs firebase用户认证服务不与视图进行通信的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆