Мне не хватает чего-то очень простого.
В моем контроллере я получаю объект 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}}
тогда я должен получить значение имени этого пользовательского объекта, верно?
Как обсуждалось в комментариях, ваш файл cookie хранит строку, а не объект. Вы можете вернуть объект из своей строки JSON, используя метод angular.fromJson
.
$scope.userObj = angular.fromJson(userObj)
Вы могли бы еще больше упростить работу с помощью методов getObject
и методов putObject
$cookies
, позволяя Angular сериализовать и десериализовать объект в фоновом режиме.
$cookies.getObject/putObject
и позволить Angular выполнить сериализацию / десериализацию для вас?