我遗漏了一些非常简单的事情。
在我的控制器中,我得到了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}}
,那么我应该得到该用户对象的名称值,对吗?
答案 0 :(得分:1)
正如评论中所讨论的,您的cookie存储字符串,而不是对象。您可以使用angular.fromJson
方法从JSON字符串中获取对象。
$scope.userObj = angular.fromJson(userObj)
您可以使用$cookies
服务的getObject
和putObject
方法进一步简化操作,让Angular在后台序列化和反序列化对象。