在angularJS中创建自己的service

原文出处请看这里

angularJS为我们提供了许多现成的service供我们使用,比如$http, $timeout, $interval.

同时在angularJS中创建自己的service也非常容易。最常见的就是用angular.module中的factory模式. 一个通常的创建service的构架如下

angular.module('myApp',[])
.factory('myService',function(){
 var serviceInstance = {};
 //添加service逻辑
return serviceInstance ;
});

下面我们来创建一个调用Github API 的简单service. 在页面中输入github的用户名,就可以得到用户相应的信息。

首先是我们的HTML代码

<!DOCTYPE HTML>
<html>
<head>
	<script type="text/javascript" src="./js/angular.min.js"></script>
	<script type="text/javascript" src='./js/main.js'></script>
</head>
<body ng-app='myApp'>
	<div ng-controller='ServiceController'>
		<label for='username'>Your GitHub username</label>
		<input type='text' ng-model='username' placeholder='Enter your github username'></input>
		<pre ng-show='username'>{{ events }}</pre>
	</div>
</body>
</html>

然后创建我们的main.js.首次创建service, 这个service中,我们用到了angularJS自带的$http服务

var app = angular.module('myApp',[]);
app.factory('githubService',function($http){
	var doRequest = function(username,path){
		return $http({
			method:'JSONP',
			url:'https://api.github.com/users/' + username + '/' + path + '?callback=JSON_CALLBACK'
		});
	}

	return {events:function(username){return doRequest(username,'events');}};
});
然后就可以调用我们的githubService服务了

app.controller('ServiceController',function($timeout,$scope,githubService){
	var timeout = undefined;
	$scope.$watch('username',function(newUsername){
		githubService.events(newUsername).success(function(data,status,header){
					$scope.events = data.data;
				});
		
	});
});
每当输入改变时,我们都会去调用githubService查找相应的信息。能不能更加智能一点,当我们输入暂停一段时间后,再去调用githubService呢?

app.controller('ServiceController',function($timeout,$scope,githubService){
	var timeout = undefined;
	$scope.$watch('username',function(newUsername){
		if(newUsername){
			if(timeout) $timeout.cancel(timeout);
			timeout = $timeout(function(){
				githubService.events(newUsername).success(function(data,status,header){
					$scope.events = data.data;
				});
			},5000);
		}
	});
});
这样就好了。我们输入暂停5秒后,才会去调用githubService.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值