AngularJS转换响应内容


Posted in Javascript onJanuary 27, 2016

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

本篇就来体验在AngualrJS中如何实现。

在主页面,还是从controller中拿数据。

<body ng-app="publicapi">
<ul ng-controller="controllers.View">
<li ng-repeat="repo in repos">
<b ng-bind="repo.userName"></b>
<span ng-bind="repo.url"></span>
</li>
</ul>
</body>

以上,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转换。

Javascript 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
CSDN轮换广告图片轮换效果
Mar 27 Javascript
JS对象与JSON格式数据相互转换
Feb 20 Javascript
JS对文本框值的判断示例
Mar 10 Javascript
Javascript核心读书有感之类型、值和变量
Feb 11 Javascript
javascript实现控制文字大中小显示
Apr 28 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
关于vue.js组件数据流的问题
Jul 26 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
Vue使用zTree插件封装树组件操作示例
Apr 25 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
Oct 31 Javascript
js实现手表表盘时钟与圆周运动
Sep 18 Javascript
jQuery+css实现的切换图片功能代码
Jan 27 #Javascript
javascript中的3种继承实现方法
Jan 27 #Javascript
jQuery+css实现的换页标签栏效果
Jan 27 #Javascript
js实现的彩色方块飞舞奇幻效果
Jan 27 #Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 #Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 #Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
Jan 27 #Javascript
You might like
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
Python常用列表数据结构小结
2014/08/06 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
Django视图、传参和forms验证操作
2020/07/15 Python
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
GWebs公司笔试题
2012/05/04 面试题
会计工作心得体会
2014/01/13 职场文书
打架检讨书500字
2014/01/29 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
班级团队活动方案
2014/08/14 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android