服务进程 http.get 结果进入新数组并 return 调用控制器
Service process http.get results into new array and return to calling controller
我想保持业务逻辑在服务中并且 return 数组对象需要我的控制器。
service.getBooking($scope.bookingId).success(function (data) {
$scope.booking = data;
console.log("3 storeno: " + $scope.booking.Storeno);
在我的服务中,我有:
testLabApp.factory('service', ['$http', function ($http) {
var getBooking = function (bookingId) {
console.log("[getBooking] bookingId = " + bookingId);
var config = {headers: { 'Accept': 'application/json;odata=verbose' }};
return $http.get(theUrl, config).success(function (data) {
var booking = [];
console.log("1 data.d.results = " + data.d.results.length);
var e = data.d.results[0];
booking = {
Id: e['Id'],
Storeno: e['Title']
};
console.log("2 Done = Id: " + booking.Id + " | Store no: " + booking.Storeno);
return booking;
}, function (er) {
alert(er);
});
}
return {
getBooking: getBooking
}
问题是我希望从 getBooking 服务调用中 return 预订 [],但 console.log 显示“3 storeno:”未定义。
“1 data.d.results”如我所料为 1,“2 Done...”显示了我所期望的 Id 和 Storeno 值。
有什么不对的地方请多多指教。
问候
克雷格
由于您 service
returns 调用 $http.get
而不是预期的结果,因此出现错误。尝试使用这样的 callback
方法:
控制器:
service.getBooking($scope.bookingId, function(err, data) {
if (err) throw err;
$scope.booking = data;
console.log("3 storeno: " + $scope.booking.Storeno);
}
服务:
testLabApp.factory('service', ['$http', function ($http) {
var getBooking = function (bookingId, callback) {
console.log("[getBooking] bookingId = " + bookingId);
var config = {headers: { 'Accept': 'application/json;odata=verbose' }};
$http.get(theUrl, config).success(function (data) {
console.log("1 data.d.results = " + data.d.results.length);
var e = data.d.results[0];
var booking = {
Id: e['Id'],
Storeno: e['Title']
};
console.log("2 Done = Id: " + booking.Id + " | Store no: " + booking.Storeno);
callback(null, booking);
}.error(err) {
callback(err);
});
}
return {
getBooking: getBooking
}
我想保持业务逻辑在服务中并且 return 数组对象需要我的控制器。
service.getBooking($scope.bookingId).success(function (data) {
$scope.booking = data;
console.log("3 storeno: " + $scope.booking.Storeno);
在我的服务中,我有:
testLabApp.factory('service', ['$http', function ($http) {
var getBooking = function (bookingId) {
console.log("[getBooking] bookingId = " + bookingId);
var config = {headers: { 'Accept': 'application/json;odata=verbose' }};
return $http.get(theUrl, config).success(function (data) {
var booking = [];
console.log("1 data.d.results = " + data.d.results.length);
var e = data.d.results[0];
booking = {
Id: e['Id'],
Storeno: e['Title']
};
console.log("2 Done = Id: " + booking.Id + " | Store no: " + booking.Storeno);
return booking;
}, function (er) {
alert(er);
});
}
return {
getBooking: getBooking
}
问题是我希望从 getBooking 服务调用中 return 预订 [],但 console.log 显示“3 storeno:”未定义。
“1 data.d.results”如我所料为 1,“2 Done...”显示了我所期望的 Id 和 Storeno 值。
有什么不对的地方请多多指教。
问候 克雷格
由于您 service
returns 调用 $http.get
而不是预期的结果,因此出现错误。尝试使用这样的 callback
方法:
控制器:
service.getBooking($scope.bookingId, function(err, data) {
if (err) throw err;
$scope.booking = data;
console.log("3 storeno: " + $scope.booking.Storeno);
}
服务:
testLabApp.factory('service', ['$http', function ($http) {
var getBooking = function (bookingId, callback) {
console.log("[getBooking] bookingId = " + bookingId);
var config = {headers: { 'Accept': 'application/json;odata=verbose' }};
$http.get(theUrl, config).success(function (data) {
console.log("1 data.d.results = " + data.d.results.length);
var e = data.d.results[0];
var booking = {
Id: e['Id'],
Storeno: e['Title']
};
console.log("2 Done = Id: " + booking.Id + " | Store no: " + booking.Storeno);
callback(null, booking);
}.error(err) {
callback(err);
});
}
return {
getBooking: getBooking
}