Не могу прочитать свойство от службы в угловой

0

В этом случае консоль регистрировала все свойства

    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;
    });
};
  • 0
    Отсутствует $? $ Service.getPerson ();
  • 0
    @Damiano Мне всегда интересно, если это так просто, или если это просто опечатка в вопросе, хороший улов, если так.
Показать ещё 4 комментария
Теги:
service

1 ответ

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);
}

Я считаю, что это решит ваши проблемы.

Ура!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню