如何创建服务/工厂angularjs

时间:2013-11-28 11:35:26

标签: angularjs

我有这个电话。我想在控制器使用它之前操纵REST服务返回的数据。如何实现这一目标?现在我得到了原始数据。我明白我可以这个逻辑ApiFactory.get(function(data));但我更喜欢在服务器中使用逻辑。我怎样才能做到这一点?

在服务中:

app.factory('ApiFactory', ['$resource', function($resource) {
  return $resource('http://localhost:8080/rest/forum/categories/1');
}]);

在控制器中:

app.controller('SubjectCntrl', ['$scope', 'categoryService', 'ApiFactory', function($scope, categoryService, ApiFactory) {
    ApiFactory.get(function(data) {
        console.log(data);
    });
}]);

1 个答案:

答案 0 :(得分:1)

您可以根据需要创建另一个解析数据的工厂。这样的事情:

app.factory('ApiFactory', ['$resource', function($resource) {
    return $resource('http://localhost:8080/rest/forum/categories/1');
}]);

app.factory('ApiParser', ['ApiFactory', function(ApiFactory) {
    return {
        get: function() {
            var data = ApiFactory.get(function(d) {
                /* do whatever you need to do with the data */
                return parsedData;
            });
            return data;
        }
    }
}]);

app.controller('SubjectCntrl', ['$scope', 'categoryService', 'ApiParser', function($scope, categoryService, ApiParser) {
    $scope.parsedData = ApiParser.get();
}]);