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 相关文章推荐
javascript各浏览器中option元素的表现差异
Apr 07 Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
谷歌Chrome浏览器扩展程序开发小记
Jan 06 Javascript
jQuery实现简单隔行变色的方法
Feb 20 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
Oct 08 Javascript
vue判断input输入内容全是空格的方法
Mar 02 Javascript
node.js通过axios实现网络请求的方法
Mar 05 Javascript
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
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
实现获取http内容的php函数分享
2014/02/16 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
PHP实现递归的三种方法
2020/07/04 PHP
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
python两种遍历字典(dict)的方法比较
2014/05/29 Python
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
感恩之星事迹材料
2014/05/03 职场文书
秋收起义观后感
2015/06/11 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
浅析Python中的随机采样和概率分布
2021/12/06 Python
PHP RabbitMQ消息列队
2022/05/11 PHP