在这种情况下,控制台记录了所有属性
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 :(得分: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);
}
我相信它会解决你的问题。
干杯!