Распечатать JSON в угловых JS, я вижу в консоли, но не могу напечатать то же самое

0

Мне не хватает чего-то очень простого.

В моем контроллере я получаю объект JSON.

app.controller("dashboardCtrl",  ["$scope","authFactory","$location", function($scope,authFactory,$location){
    var userObj = authFactory.getUserObj(userObj);
    console.log(userObj);
    $scope.userObj = userObj;

    var accessToken = authFactory.getAccessToken();
    console.log(accessToken);
    $scope.accessToken = accessToken;

    $scope.FBout = function(){
        FB.logout(function(response) {
            authFactory.clearCookie();
            $location.path("/");    
            $scope.$apply();
        });
    };
}]);

В консоли я получаю ответ следующим образом

{"name":"Pavan Sudheendra","id":"539193599614696"}

Заводской код для этого же, как показано ниже:

app.factory("authFactory",["$cookies","$location",function($cookies,$location){
    var authFactory = {};

    authFactory.setAccessToken = function(accessToken){
        $cookies.put("accessToken",accessToken);
    }

    authFactory.getAccessToken = function(){
        return $cookies.get("accessToken");
    }

    authFactory.getUserObj = function(){
        var userObj = $cookies.get('userObj');

        if(userObj){
            return userObj;
        }
        else {
            console.log("error");
        }
    }

    authFactory.clearCookie = function(){
        $cookies.remove("accessToken");
        $cookies.remove("userObj");
    }

    authFactory.isAuthenticated = function(){
        var isLoggedIn=$cookies.get("accessToken")?true:false;
        return isLoggedIn;
    }

    return authFactory;
}]);

но я пытаюсь использовать этот объект, чтобы напечатать его в интерфейсе. подобно

<h1> this is dashboard {{accessToken}} {{userObj.name}} </h1>

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

Если я попытаюсь напечатать {{userObj}}, весь объект будет напечатан. то, если я попробую {{userObj.name}} тогда я должен получить значение имени этого пользовательского объекта, верно?

  • 0
    он должен работать. Пожалуйста, вы можете опубликовать работающий код, который воспроизводит проблему. Из кода не ясно, что вы получаете доступ к правильной области.
  • 0
    Хорошо .. позвольте мне добавить полный контроллер, заводской код .. подождите секунду
Показать ещё 8 комментариев

1 ответ

1
Лучший ответ

Как обсуждалось в комментариях, ваш файл cookie хранит строку, а не объект. Вы можете вернуть объект из своей строки JSON, используя метод angular.fromJson.

$scope.userObj = angular.fromJson(userObj)

Вы могли бы еще больше упростить работу с помощью методов getObject и методов putObject $cookies, позволяя Angular сериализовать и десериализовать объект в фоновом режиме.

  • 2
    Почему бы не использовать $cookies.getObject/putObject и позволить Angular выполнить сериализацию / десериализацию для вас?
  • 0
    Обновил мой ответ, спасибо за указание на это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню