如何处理工厂

时间:2016-02-02 10:50:13

标签: javascript angularjs http

我正在使用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

非常感谢帮助:)

1 个答案:

答案 0 :(得分:0)

您可以尝试更改

吗?
var getOptions = optionsService.getOptions();
// to
var getOptions = optionsService.getOptions;

如果你创造了一个plunkr /小提琴,那会有所帮助。