博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AngularJS中转换响应内容
阅读量:5346 次
发布时间:2019-06-15

本文共 1852 字,大约阅读时间需要 6 分钟。

 

从远程API获取到的响应内容,通常是json格式的,有时候需要对获取到的内容进行转换,比如去除某些不需要的字段,给字段取别名,等等。

本篇就来体验在AngualrJS中如何实现。
在主页面,还是从controller中拿数据。

 

    

 

以上,userName, url字段是从源数据中转换而来的,可能userName对应源数据中的fullName,可能源数据中有更多的字段。

在AngularJS中,把module之间的关系梳理清楚是一种很好的习惯,比如按如下方式梳理:

 

angular.module('publicapi.controllers',[]);angular.module('publicapi.services',[]);angular.module('publicapi.transformers',[]);angular.module('publicapi',[    'publicapi.controllers',    'publicapi.services',    'publicapi.transformers'])

 

数据还是从controller中来:

 

angular.module('publicapi.controllers')    .controller('controllers.View',['$scope', 'service.Api', function($scope, api){        $scope.repos = api.getUserRepos("");    }]);

 

controller依赖于service.Api这个服务。

 

angular.module('publicapi.services').factory('services.Api',['$q', '$http', 'services.transformer.ApiResponse', function($q, $http, apiResponseTransformer){    return {        getUserRepos: function(login){            var deferred = $q.defer();            $http({                method: "GET",                url: "" + login + "/repos",                transformResponse: apiResponseTransformer            })            .success(function(data){                deferred.resolve(data);            })                        return deferred.promise;        }    };}])

 

$http服务中的transformResponse字段就是用来转换数据源的。services.Api依赖于services.transformer.ApiResponse这个服务,在这个服务力完成对数据源的转换。

 

angular.module('publicapi.transformers').factory('services.transformer.ApiResponse', function(){    return function(data){        data = JSON.parse(data);        if(data.length){            data = _.map(data, function(repo){                return {userName: reop.full_name, url: git_url};            })        }        return data;    };});

 

以上,使用了underscore对数据源进行map转换。

 

转载于:https://www.cnblogs.com/darrenji/p/5162557.html

你可能感兴趣的文章
计数器方法使用?
查看>>
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
查看>>
sonar结合jenkins
查看>>
解决VS+QT无法生成moc文件的问题
查看>>
AngularJs练习Demo14自定义服务
查看>>
关于空想X
查看>>
CF1067C Knights 构造
查看>>
[BZOJ2938] 病毒
查看>>
webstorm修改文件,webpack-dev-server不会自动编译刷新
查看>>
Scikit-learn 库的使用
查看>>
CSS: caption-side 属性
查看>>
python 用数组实现队列
查看>>
认证和授权(Authentication和Authorization)
查看>>
Mac上安装Tomcat
查看>>
CSS3中box-sizing的理解
查看>>
传统企业-全渠道营销解决方案-1
查看>>
Lucene全文检索
查看>>
awk工具-解析1
查看>>
推荐一款可以直接下载浏览器sources资源的Chrome插件
查看>>
CRM product UI里assignment block的显示隐藏逻辑
查看>>