角度工厂 - 改变返回的数据

时间:2016-06-20 23:55:47

标签: javascript angularjs json controller angular-services

我跟随Angular JS Tutorial,我想知道是否有另一种方法可以修改它。

目前,我正在使用定义为的工厂返回数据:

angular.
    module('core.card').
    factory('Card', ['$resource',
        function($resource){
            return $resource('cards/:cardId.json', {}, {
                query: {
                    method: 'GET',
                    params: {cardId: 'cards'},
                    isArray: true
                }
            });
        }
    ]);

这一切都很好并且有效,因为cards.json拥有所有可用的卡片,这正是我想要归还的内容。

他们正在描述的方法(例如处理RESTful服务)假定有多个其他特定的JSON文件可以根据路由返回。我理解如何在实际服务中使用它,但是我想说在我绑定到我的模块之前我想要更改返回的JSON数据,所以我没有一堆额外的数据,我不会这样做#&# 39;需要吗?

让我们说/cards/foo.json包含这样的内容:

[{
    "id": "foo",
    "name": "Bar",
    "img": "foobar.png",
    "unnecessaryKey": "remove me"
}]

但是我在哪里写一个只返回的函数:

[{
    "id": "foo",
    "name": "Bar",
    "img": "foobar.png"
}]

我是否会在query函数所在的位置分配它,例如:

        ...
        return $resource('cards/:cardId.json', {}, {
            query: {
                method: 'GET',
                params: {cardId: 'cards'},
                isArray: true
            },
            alterReturnedData: {
                // doStuffToFormatData
            }
        });
        ...

或者最好只在Component中修改它,因为我现在在做什么?

function alterReturnedData(data){
    // doStuffToFormatData
}
var unmodified = Card.get({cardId:'foo'}, function(){
    self.data = alterReturnedData(unmodified);
});

我觉得最好将服务中的数据返回到实际需要的组件控制器,而不是在那里有很多逻辑来扭曲它。

我的方法可以在Controller中运行此功能吗? 或者最好在服务中改变它,我该怎么做?

0 个答案:

没有答案