В этом случае консоль регистрировала все свойства
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. $ 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);
}
Я считаю, что это решит ваши проблемы.
Ура!