简体   繁体   中英

AngularJS: could not access Object property in the controller

this is my object that get from a service.

this is my controller.

var user = useroneService.getLoggedUser(user);
console.log(user);

在此处输入图片说明

console.log(user.data);

I got a undefined when I try to access the data. How do I access to the Object data?

user.service.js

'use strict';
angular.module('app').service('userService',['authService', 'userTransformer','LoggedUser', function(authService, userTransformer, LoggedUser) {
  this.getLoggedUser = function(user){
    return authService.login(user).then(function (response) {
      var loggedUser = userTransformer.transform(response.data);
    });
  };
}]);

logged.user.js

angular.module('app').value('LoggedUser', function () {  
    var LoggedUser = function () {
        this.dispalyName = '';
        this.token = '';
        this.logged = false;
    };  
    LoggedUser.prototype = {    
    };
});

user.transformer.js

angular.module('app').factory('userTransformer',['LoggedUser', function (LoggedUser) {
  //logged user transform
  var transformObject = function (response) {
    var model = new LoggedUser();
    angular.extend(model, response);
    return model;
  };
  return {
    transform: transformObject
  };
}]);

flow

AuthService(get data)==>UserService(data transform to LoggedUser using the transformer)
    ==>LoginController

You are not returning a promise. Change your controller code to:

useroneService.getLoggedUser(user).then(function(data) {
    var user = data;
    console.log(user);
})

One more thing, you are not returning the response from your service:

return authService.login(user).then(function (response) {
  var loggedUser = userTransformer.transform(response.data);
  return loggedUser; //add this
}); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM