我正在使用Angular工厂,服务和控制器。我使用$ http从服务获取数据的服务,将其发送到工厂,工厂然后处理响应数据并将对象发送到控制器:
服务
module.exports = function($http, $q){
return {
getOptions: function () {
var deferred = $q.defer();
$http({ method: "GET", url: AppAPI.url + 'acf/v2/options/' })
.success(function (data, status, headers, config) {
deferred.resolve(data);
}).error(function (data, status, headers, config) {
deferred.reject(status);
});
return deferred.promise;
}
}
};
工厂:
module.exports = function(optionsService){
var options = {};
var getOptions = optionsService.getOptions();
getOptions.then(function(items){
options = items;
});
return options;
};
控制器:
module.exports = function($scope, $http, optionsFactory){
console.log(optionsFactory);
};
但Factory会向控制器返回一个空选项。您如何将promise中的项目分配给选项对象,并将其返回给控制器?
更新
这是fiddle
非常感谢帮助:)
答案 0 :(得分:0)
您可以尝试更改
吗?var getOptions = optionsService.getOptions();
// to
var getOptions = optionsService.getOptions;
如果你创造了一个plunkr /小提琴,那会有所帮助。