angularjs firebase用户认证服务不与视图进行通信 [英] angularjs firebase user auth service not communicating with the views
问题描述
我有一个将参数 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屋!