无法从角度服务中读取属性

时间:2016-07-29 13:38:06

标签: angularjs service

在这种情况下,控制台记录了所有属性

    app.controller("sgCtrl", function ($scope, $service)
    {
    var asd=service.getPerson();
    console.log(asd);
    }

但是当我试图获得一些属性时,它返回我未定义

...console.log(asd.person.Id)

我的服务

 function service($http, $q) {
  var service = {
    person:[]
  };

    service.getPerson = function (personId) {

    return $http.get('/P/GetP',
    {params:{personId:personId}}).success(function (res) {

       service.person = res.Person;
    });
};

1 个答案:

答案 0 :(得分:0)

问题是 1. $ http。()。success(function(){})是异步函数。所以service.person只有在控件进入成功回调处理程序时才可用。 2.您没有以正确的方式创建服务。

您可以尝试使用以下代码:

服务代码

function service($http, $q) {
    this.getPerson = function (personId, successHandler) {

    $http.get('/P/GetP',
    {params:{personId:personId}}).success(function (res) {
       successHandler(res.Person);
    });
};

app.service('MyService', service);

控制器代码

app.controller("sgCtrl", function ($scope, MyService) {
    function successHandler(person) {
        console.log(person.IsActive);     
    }

    MyService.getPerson('somePersonId', successHandler);
}

我相信它会解决你的问题。

干杯!