在角度js中打印JSON,我可以在控制台中看到,但不能打印相同的

时间:2016-08-14 13:10:37

标签: javascript angularjs json

我遗漏了一些非常简单的事情。

在我的控制器中,我得到了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>

我确信我已经包含了每个控制器并将工厂链接到它,事情是我能够打印出来的。但是,我无法打印它的名称和ID。

如果我尝试打印{{userObj}},则会打印整个对象。然后,如果我尝试{{userObj.name}},那么我应该得到该用户对象的名称值,对吗?

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的,您的cookie存储字符串,而不是对象。您可以使用angular.fromJson方法从JSON字符串中获取对象。

$scope.userObj = angular.fromJson(userObj)

您可以使用$cookies服务的getObjectputObject方法进一步简化操作,让Angular在后台序列化和反序列化对象。