1

У меня есть служба, которая передает параметр pseudonym в окружение. Я обращаюсь к этому pseudonym в мои взгляды, но он вообще не появляется.
Как я могу исправить это, чтобы отобразить значение в моих представлениях?
angularjs firebase пользователь auth сервис не общается с видами

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('value') 
       .then(function (snapshot) { 
        pseudonym = snapshot.val().pseudonym; 
        console.log("pseudony: ", pseudonym); 
        return pseudonym; 
       }); 

     } 
    } 
}]); 

в моей консоли, я вижу значение для pseudonym. но не на мой взгляд, HTML, используя {{псевдоним}}
и здесь есть контроллер Пример вид:

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

введите console.log и проверьте, можете ли вы видеть переменную – Sajeetharan

+0

@Sajeetharan. Я ставлю консольный журнал в контроллер моего представления, и он дает мне undefined! но он дает правильное значение в журнале консоли внутри службы. – cplus

+0

Изменить имя функции, отличное от псевдонима – Sajeetharan

ответ

1

Возвращение обещание, созданный .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') 
        .then(function onSuccess(snapshot) { 
         let pseudonym = snapshot.val().pseudonym; 
         console.log("pseudony: ", pseudonym); 
         return pseudonym; 
       }) 
      ); 
     } 
    } 
}]); 

Затем извлечь стоимость этого обещания:

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 Метод объекта всегда возвращает обещание, полученное из значения (или обещания), возвращаемого функцией обработчика, представленной в качестве аргумента для метода .then.

 Смежные вопросы

  • Нет связанных вопросов^_^