Angularjs Angular JS-处理服务/工厂中的数据,并使经过清理的对象可供控制器使用

Angularjs Angular JS-处理服务/工厂中的数据,并使经过清理的对象可供控制器使用,angularjs,Angularjs,我目前有一个简单的工厂,如下所示: myFactory.factory('myFactory', function($resource){ return $resource('http://to/my/api', {}, { query: { method: 'GET' } }); }); myFactory.factory('myFactory', function($resource){ var connect

我目前有一个简单的工厂,如下所示:

myFactory.factory('myFactory', function($resource){
    return $resource('http://to/my/api', {}, {
        query: {
            method: 'GET'
        }
    });
});
myFactory.factory('myFactory', function($resource){
    var connection = $resource('http://to/my/api', {}, {
        query: {
            method: 'GET'
        }
    });
    var filters = connection.query();
    for(var i = 0; i < filters.data.length; i++){
        // Get the name value in the data array
        var name = filters.data[i].Name;
        // Create new properties in $scope.filters and assign arrays to them.  Each array is a separate filter
        filters[name] = filters.data[i].Values;
    }
    return filters;
});
我想将我目前在控制器中进行的一些数据处理/卫生工作转移到我的工厂。我将我的工厂改为:

myFactory.factory('myFactory', function($resource){
    return $resource('http://to/my/api', {}, {
        query: {
            method: 'GET'
        }
    });
});
myFactory.factory('myFactory', function($resource){
    var connection = $resource('http://to/my/api', {}, {
        query: {
            method: 'GET'
        }
    });
    var filters = connection.query();
    for(var i = 0; i < filters.data.length; i++){
        // Get the name value in the data array
        var name = filters.data[i].Name;
        // Create new properties in $scope.filters and assign arrays to them.  Each array is a separate filter
        filters[name] = filters.data[i].Values;
    }
    return filters;
});
myFactory.factory('myFactory',函数($resource){
变量连接=$resource('http://to/my/api', {}, {
查询:{
方法:“获取”
}
});
var filters=connection.query();
对于(变量i=0;i
本质上,我在上面所做的是重新排序从AJAX调用返回的对象数组的结构


当我试图在控制器中从工厂控制台记录我的'filters'变量时,我会收到一条'undefined'消息。我上面的工厂语法有什么问题?

因为您没有公开任何要返回的
过滤器,请尝试:

myFactory.factory('myFactory', function($resource){
  return {
     getFilters:function(){
                    var connection = $resource('http://to/my/api', {}, {
                        query: {
                              method: 'GET'
                       }
                    });
          var filters = connection.query();
          for(var i = 0; i < filters.data.length; i++){
          // Get the name value in the data array
          var name = filters.data[i].Name;
          // Create new properties in $scope.filters and assign arrays to them.  Each array is a separate filter
          filters[name] = filters.data[i].Values;
    }
    return filters;
}
}
});
myFactory.factory('myFactory',函数($resource){
返回{
getFilters:function(){
变量连接=$resource('http://to/my/api', {}, {
查询:{
方法:“获取”
}
});
var filters=connection.query();
对于(变量i=0;i
在控制器中这样称呼它:

$scope.filters=myFactory.getFilters()


请原谅这些糟糕的格式设置。

谢谢。作为一个附带问题,我注意到我从connection.query()返回的“filters”对象是一个资源对象,就像它在我的控制器中一样。但与我的控制器不同,我不能使用“过滤器.$PROMITE.then”来解决它。我如何处理工厂/服务中的承诺?我认为资源不需要承诺,如果我没有弄错的话,是$http返回承诺。你是如何使用控制器中的资源的,如果可以的话,发布一个plunk。