【问题标题】:Modifying factory response in Angular在 Angular 中修改工厂响应
【发布时间】:2014-03-25 19:17:07
【问题描述】:

我正在使用的 Web 服务以必须修改的格式返回我的数据,然后才能将其放入我的视图中。

这是我的基本工厂:

.factory( 'myServices', function ( $http ){
    var myServices = {      
        getInfo: function(){
            var promise = $http(
                { 
                    url: "/deal-details.json",
                    method: "GET"                       
                })
                .then(function(response) {
                    return response.data;
                }
            );  
            // some logic to modify promise???          
            return promise;
        }
    };
    return myServices;
});

我的问题是我应该在返回承诺之前对 getInfo() 中的承诺进行任何修改吗?之前的开发人员正在修改控制器中从 myServices.getInfo() 返回的值,但这对我来说似乎不对。

【问题讨论】:

  • 是的,如果它的修改不是特定于视图的渲染。那么这个地方就是服务similar

标签: javascript angularjs model-view-controller


【解决方案1】:

使用 $http 提供给您的 transformResponse 怎么样?类似的东西

$http({
    method : 'GET',
    url : "/deal-details.json",
    transformResponse : function (response) {
        // your modification here
        return response.data;
    }
    });

【讨论】:

    【解决方案2】:

    这真的取决于需要修改的内容 - 或者是否每次都需要修改。如果 100% 的时间需要修改数据,不妨在服务内进行。

    但是,如果需要根据调用它的函数进行不同的修改 - 那么它可能应该在控制器内完成。

    如果您需要拦截所有$http 请求,@przno 的回答很好。如果所有的承诺都需要修改或以某种方式验证——那么这是一个很好的解决方案!但您的问题似乎与特定服务有关。

    【讨论】:

    • 我的直觉告诉我每个人都在说什么......如果是一般数据修改需要在使用数据时保持真实,而不是在服务中进行,如果它是一次性的,请继续在控制器中。
    猜你喜欢
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    相关资源
    最近更新 更多