Angular-fullstack получить идентификатор пользователя

Я использую angular-fullstack для создания одностраничного приложения, и в одном из моих Контроллеры Я пытаюсь присвоить идентификатор пользователя переменной. Код

$scope.getCurrentUser = Auth.getCurrentUser;

возвращается

function () {
        return currentUser;
}

Это отлично работает для отображения в моем представлении, поскольку мой угловой код может интерпретировать функцию и отображать идентификатор пользователя, используя {{getCurrentUser()._id}}, который, как я предполагаю, оценивает обещание и отображает код в представлении.

Мой вопрос: как мне назначить $scope.getCurrentUser = Auth.getCurrentUser; переменной в моем контроллере? Всякий раз, когда я это делаю, я получаю неопределенные переменные. Я пытался:

$scope.getId = Auth.getCurrentUser()._id;
console.log($scope.getId); //undefined

$scope.getId = Auth.getCurrentUser();
console.log($scope.getId._id); //undefined

Я читал сообщения на форуме, такие как это и this, где объясняется, что эти методы должны возвращаться такими, какие они есть. Другой сообщение, в основном то же самое. вопрос как у меня, но я все еще не понимаю, как сохранить идентификатор пользователя, потому что ответ намекал, что проблема была в console.log. Любая помощь будет принята с благодарностью, спасибо.


person Troy Griffiths    schedule 17.05.2015    source источник
comment
Это может быть связано с тем, что для оценки обещания требуется некоторое время. Но ваша область действия обновляется до того, как она будет решена. Так что показывает undefined.   -  person Chinni    schedule 18.05.2015
comment
В этом случае, как я буду ждать, пока обещание будет оценено? Я пытался использовать .then() и вкладывать вызовы функций, а также помещать их в функции обратного вызова, но безрезультатно.   -  person Troy Griffiths    schedule 18.05.2015


Ответы (1)


Попробуйте следующее и дайте мне знать, как это работает:

angular.module('yourModuleName').controller('YourController', ['$scope', 'Authentication',
    function($scope, Authentication) {

        var authentication = Authentication;
        $scope.getId = authentication.user._id;

        console.log($scope.getId);

    }
]);

Убедитесь, что Authentication включен в ваш контроллер.

person Tom    schedule 17.05.2015
comment
Да, к сожалению, этот способ тоже не работает, я получаю сообщение об ошибке Невозможно прочитать свойство '_id' неопределенного - person Troy Griffiths; 17.05.2015
comment
Я думаю, что это Auth, а не Authentication - person Chinni; 18.05.2015