我的页面中的所有服务器数据访问均由我的 RequestFactory 提供程序执行。 (RequestFactory 使用 $http 来执行实际的服务器调用。)
我的 Controller 范围引用了从 RequestFactory 返回的数据列表。
我的问题是,由于 RequestFactory 调用是异步的,并且 RequestFactory 没有(也不应该)访问 Controller 范围,那么 RequestFactory 将数据移交给 Controller 的正确方法是什么?
var requestFactory = {};
angular.module("myApp").factory("RequestFactory", function($http) {
requestFactory.fetch = function() {
$http.get(url).
success(function(data) {
controller.setData(data)
}).
error(function(data, status) {
console.info("fetch Failed. Error code: " + status + " Url:" + url);
}).finally(function() {
controller.setSubmitting(false);
});
};
return requestFactory;
});
最佳答案
你应该返回工厂的 promise 。请参阅下面的代码片段。
.factory("RequestFactory", function($http) {
return {
fetch : function() {
return $http.get(url).then(function(result) {
return result.data;
});
}
}
});
在你的 Controller 中你应该使用像
.controller('MainCtrl', function($scope, RequestFactory) {
RequestFactory.fetch().then(function(data)
$scope.foo = data;
});
});
关于javascript - 我应该如何将异步服务中的数据设置到 Controller $scope 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31837014/