angularjs项目中关于服务的应用
/**
*普通ajax请求公共服务
*/
mainModule.factory('myService',function($http,$q){
var service = {};
var baseUrl = '../';
var _url = '';
var _finalUrl = '';
var _token = '';
/**
* 处理请求路径
*/
var makeUrl = function(){
_url = _url.split(' ').join('+');
_finalUrl = baseUrl +_url;
return _finalUrl
}
/**
* 设置请求路径
*/
service.setUrl = function(url){
_url = url;
}
service.setToken = function(token){
_token = token;
}
/**
* 获取请求路径
*/
service.getUrl = function(){
return _url;
}
service.getToken = function(){
return _token;
}
/**
* $q.defer() 构建的 deffered 实例的几个方法的作用。
* 如果异步操作成功,则用resolve方法将Promise对象的状态变为“成功”(即从pending变为resolved);如果异步操作失败,
* 则用reject方法将状态变为“失败”(即从pending变为rejected)。最后返回 deferred.promise ,我们就可以链式调用then方法。
*/
service.callItuns = function(){
makeUrl();
//通过 调用 $q.defferd 返回deffered对象以链式调用
/**
* deffered 对象的方法
* 1.resolve(value):在声明resolve()处,表明promise对象由pending状态转变为resolve。 成功状态
* 2.reject(reason):在声明resolve()处,表明promise对象由pending状态转变为rejected。失败状态
* 3.notify(value) :在声明notify()处,表明promise对象unfulfilled状态,在resolve或reject之前可以被多次调用。
*/
var defrred = $q.defer();
$http({
method: 'post', url: _finalUrl,headers : {'token' : _token}
}).success(function(resp){
if(resp.success){
defrred.resolve(resp);
}
})
/**
* 返回promise对象
* 1.then(errorHandler, fulfilledHandler, progressHandler):
* then方法用来监听一个Promise的不同状态。errorHandler监听failed状态,
* fulfilledHandler监听fulfilled状态,progressHandler监听unfulfilled(未完成)状态。
* 此外,notify 回调可能被调用 0到多次,提供一个进度指示在解决或拒绝(resolve和rejected)之前。
* 2.catch(errorCallback) —— promise.then(null, errorCallback) 的快捷方式
* 3.finally(callback) ——让你可以观察到一个 promise 是被执行还是被拒绝, 但这样做不用修改最后的 value值。
* 这可以用来做一些释放资源或者清理无用对象的工作,不管promise 被拒绝还是解决。 更多的信息请参阅 完整文档规范.
*/
return defrred.promise;
}
return service;
});
/*在控制器中应用该服务*/
*某个js文件
*/
mainModule.controller('togetherCtrl', ['$scope','$http','$timeout','$state','myService',
function($scope,$http,$timeout,$state,myService){
//设置请求路径
var _url = 'kcsz/getCourseList.do'
/
/set方法设置路径myService.setUrl(_url);
//call请求回调
/**
* 因为callItunes返回一个promise对象,一旦我们的promise满足了
* 我们可以调用.then()方法以及设置$scope.data.artistData。
* 会注意到我们的controller是非常的“瘦”。因为我们所有的逻辑和持久化数据都存放在了service中而不是controller中。
*/
myService.callItuns().then(function(data){
$scope.courserList = data.data;
console.log(data);
});
}]);
angularjs项目中关于服务的应用的更多相关文章
- 教你如何在React及Redux项目中进行服务端渲染
服务端渲染(SSR: Server Side Rendering)在React项目中有着广泛的应用场景 基于React虚拟DOM的特性,在浏览器端和服务端我们可以实现同构(可以使用同一份代码来实现多端 ...
- AngularJS中实现服务端分页
这个教程将介绍在AngularJS应用中的服务端分页处理.在任何涉及到列表或表格数据的应用中都可能会用到分页. 概念 当我们处理异步分页时,每次只从服务器上获取一页数据.也就是说当用户点击第二页,就只 ...
- 项目中使用WCF替换asmx Web service总结
以前项目解决方案中,用http协议的asmx Web service作服务器数据访问入口,在SoapHeader中写入用户名和加盐密码进行身份认证. http asmx服务是明文传输,传输过程中数据很 ...
- node-express脚手架生成的项目中实现浏览器缓存
前言: 最近在做基于 node-express 的个人站点 朵朵视野 ,在站点发布之后自己在访问测试的过程中发现站点是没有缓存机制的,这样就导致每次访问站点都需要重新去加载资源,很消耗资源以及用户体验 ...
- netcore项目中IStartupFilter使用
背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件.它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口.相当于去掉host,这样省掉了些指定 ...
- [渣翻译] 在ASP.NET MVC WebAPI项目中使用 AngularJS
原文地址http://blog.technovert.com/2013/12/setting-up-angularjs-for-asp-net-mvc-n-webapi-project/ 我们最近发布 ...
- 【新手总结】在.Net项目中使用Redis作为缓存服务
最近由于项目需要,在系统缓存服务部分上了redis,终于有机会在实际开发中玩一下,之前都是自己随便看看写写,很零碎也没沉淀下来什么,这次算是一个系统学习和实践过程的总结. 和Redis有关的基础知识 ...
- 怎么理解angularjs中的服务?
AngularJS中的服务其实就是提供一种方式抽取共用类库 比如说一些工具类方法,我们传统的做法就是自己写个 utility 类,把相关的工具方法填充到utility里面去,最后把utility类放到 ...
- 如何在Crystal框架项目中内置启动MetaQ服务?
当Crystal框架项目中需要使用消息机制,而项目规模不大.性能要求不高时,可内置启动MetaQ服务器. 分步指南 项目引入crystal-extend-metaq模块,如下: <depende ...
随机推荐
- 知识库系统/知识管理系统 WCP
知识库系统/知识管理系统 WCP 本项目的应用场景是管理技术团队的相关知识(API.代码片段.知识定义.技术经验...) 但是其应用并不局限于这些应用,当然你最好下载一个安装版先试一试.其实这就是一个 ...
- IOS设计模式之三:MVC模式
IOS设计模式之三:MVC模式 模型-视图-控制器 这个模式其实应该叫做MCV,用控制器把model与view隔开才对,也就是model与view互相不知道对方的存在,没有任何瓜葛,他们就像一个团 ...
- 转:php中实现精确设置session过期时间的方法
原文来自于:http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下 ...
- hadoop输出统计
- 如何成为一名优秀的C程序员
如何成为一名优秀的C程序员 英文原文:To become a good C programmer 问题的提出 每过一段时间我总会收到一些程序员发来的电子邮件,他们会问我是用什么编程语言来编写自己的游戏 ...
- BZOJ 1022 小约翰的游戏
Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取 ...
- Unity NGUI 网络斗地主 -界面制作
Unity NGUI 网络斗地主 -界面制作 源文件在群(63438968群共享!) @灰太龙 这一节说一下NGUI的界面摆放,并且教会大家使用NGUI的自适应功能! 在这里感谢@Gamer,是他给我 ...
- MYSQL的硬盘IO过高引起的CPU过高判断
其实,为客户提供相关日志,不就是RACKSPACE主要作的事? 俺们以后也可以效仿的.不要去解决,而是协助客户定位. http://blog.const.net.cn/a/17275.htm 上文的思 ...
- github 托管代码两分钟教程【转载,亲测可行】
http://blog.csdn.net/duxinfeng2010/article/details/8654690 出自以上地址 本篇文章介绍的是如何将工程代码托管到上面:如果你还没注册GitHub ...
- MFC任务管理器task manager----进程的挂起与恢复--NtSuspendProcess&&NtResumeProcess
http://hi.baidu.com/xbbsh/blog/item/b73d3125462201084c088db1.html ---------------------------------- ...