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 相关文章推荐
一些mootools的学习资源
Feb 07 Javascript
js 数据类型转换总结笔记
Jan 17 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
Apr 19 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
Dec 31 Javascript
JavaScript匿名函数与委托使用示例
Jul 22 Javascript
javascript面向对象程序设计(一)
Jan 29 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
Aug 06 Javascript
jQuery实现动画效果circle实例
Aug 06 Javascript
vue快捷键与基础指令详解
Jun 01 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
Sep 05 Javascript
vue中的面包屑导航组件实例代码
Jul 01 Javascript
使用Ajax实现无刷新上传文件
Apr 12 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
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
PHP的全局错误处理详解
2016/04/25 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
php实现微信发红包功能
2018/07/13 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
对vue里函数的调用顺序介绍
2018/03/17 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
python实现xlsx文件分析详解
2018/01/02 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
英国森林假期:Forest Holidays
2021/01/01 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
什么是属性访问器
2015/10/26 面试题
护士自荐信范文
2013/12/15 职场文书
小学生通知书评语
2014/12/31 职场文书
致运动员赞词
2015/07/22 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python