等到 $http 完成,以便在 AngularJS 中输出结果
Wait till $http is finished in order to output the result in AngularJS
如何使用我的函数等待 $http 请求完成?
我的 services.js
看起来如下:
var app = angular.module('starter.services', []);
app.factory('Deals', function($http) {
function getDeals() {
$http.get('http://www.domain.com/library/fct.get_deals.php')
.success(function (data) {
var deals = data;
return deals;
})
.error(function(err){
});
}
return {
all: function() {
return getDeals();
},
get: function(keyID) {
//...
}
}
});
我的 controllers.js
看起来像:
var app = angular.module('starter.controllers', []);
app.controller('DealCtrl', function($scope, Deals) {
$scope.deals = Deals.all();
console.log($scope.deals);
});
我的 controllers.js
文件中的 console.log
输出 "undefined",但是当我在 getDeals()
函数中输出交易时,它包含我从服务器。
我做错了什么?
$http
和 angularjs return 中的所有异步服务 promise
对象。参见 promise api。
您需要使用 then
方法将其赋值给范围内的值。
所以你的控制器:
app.controller('DealCtrl', function($scope, Deals) {
Deals.all().then(function (deals) {
$scope.deals = deals;
console.log($scope.deals);
});
});
您的服务
app.factory('Deals', function($http) {
function getDeals() {
return $http.get('http://www.domain.com/library/fct.get_deals.php')
.success(function (data) {
var deals = data;
return deals;
});
}
return {
all: function() {
return getDeals();
},
get: function(keyID) {
//...
}
}
});
如何使用我的函数等待 $http 请求完成?
我的 services.js
看起来如下:
var app = angular.module('starter.services', []);
app.factory('Deals', function($http) {
function getDeals() {
$http.get('http://www.domain.com/library/fct.get_deals.php')
.success(function (data) {
var deals = data;
return deals;
})
.error(function(err){
});
}
return {
all: function() {
return getDeals();
},
get: function(keyID) {
//...
}
}
});
我的 controllers.js
看起来像:
var app = angular.module('starter.controllers', []);
app.controller('DealCtrl', function($scope, Deals) {
$scope.deals = Deals.all();
console.log($scope.deals);
});
我的 controllers.js
文件中的 console.log
输出 "undefined",但是当我在 getDeals()
函数中输出交易时,它包含我从服务器。
我做错了什么?
$http
和 angularjs return 中的所有异步服务 promise
对象。参见 promise api。
您需要使用 then
方法将其赋值给范围内的值。
所以你的控制器:
app.controller('DealCtrl', function($scope, Deals) {
Deals.all().then(function (deals) {
$scope.deals = deals;
console.log($scope.deals);
});
});
您的服务
app.factory('Deals', function($http) {
function getDeals() {
return $http.get('http://www.domain.com/library/fct.get_deals.php')
.success(function (data) {
var deals = data;
return deals;
});
}
return {
all: function() {
return getDeals();
},
get: function(keyID) {
//...
}
}
});