angularjs 服务(service)

什么是angularjs服务?
angularjs服务其实就是一个函数或是一个对象,我们可以在angularjs的应用中使用.
例如:
$timeout服务或是$interval服务
$timeout服务相当于javascript中的setTimeout函数,在设定的时间里执行我们编写好的代码.而$interval相当于javascript中的setInterval,每相隔指定时间重复执行我们所写好的代码.
例如:
<div ng-app="myApp">
	<div ng-controller="myCtrl">
		{{myInfo}}
	</div>
</div>
<script type="text/javascript">
var app = angular.module("myApp",[]);
app.controller("myCtrl",["$scope","$timeout",myCtrl]);
function myCtrl($scope,$timeout){
	$scope.myInfo = "zhang";
	$timeout(function(){
		$scope.myInfo = "你好" + $scope.myInfo + "!";
	},1000);
}
</script>
上例中执行的结果是在1秒前显示的是zhang,但是当一秒后程序执行的是$timeout中的函数,也就是"你好zhang!",所以$timeout服务就是javascript中的setTimeout,在设定的时间里执行我们编写好的$scope.myInfo = "你好" + $scope.myInfo + "!";这段代码,但是注意它是只执行一次,不会像$interval那样会在指定的时间内重复执行某一操作.
$interval服务
<div ng-app="myApp">
	<div ng-controller="myCtrl">
		{{newTime}}
	</div>
</div>
<script type="text/javascript">
var app = angular.module("myApp",[]);
app.controller("myCtrl",["$scope","$interval",myCtrl]);
function myCtrl($scope,$interval){
	$scope.newTime = new Date().toLocaleTimeString();
	$interval(function(){
		$scope.newTime = new Date().toLocaleTimeString();
	},1000);
}
</script>
运行上面代码,初始化是当前的时间,每个一秒更新一次,这样就能追踪当前本地的时间,并显示, toLocaleTimeString()是javascript中的方法,可以根据本地时间把Date对象的时间部分转换为字符串,并返回结果.
在angularjs中服务远不止这两种,在angularjs中还有很多其他的内置服务,我们可以查阅手册.
创建自定义服务
创建自定义服务,就是我们不使用angularjs中的内置服务,而是自己创建服务,然后链接到我们的模块中.
例如:
<div ng-app="myApp">
	<div ng-controller="myCtrl">
		{{myService}}
	</div>
</div>
<script type="text/javascript">
var app = angular.module("myApp",[]);
app.service("serviceName",function(){
	this.myFunc = function(x){
		return x.toString(16);
	}
});
app.controller("myCtrl",["$scope","serviceName",myCtrl]);
function myCtrl($scope,serviceName){
	$scope.myService = serviceName.myFunc(244);
}
</script>
运行上面的代码结果为f4,我们现在来将上面实例中的代码解剖一下,其实想要创建自定义服务,我们是需要用到service()这个方法,在这个实例中它的第一个参数是创建服务的名称,第二个参数为我们创建的这个参数能够执行什么样的行为,这也就决定了,当我们调用这个自己创建的服务时,它能执行什么样的动作,其中this.myFun()又是什么含义?其实如果我们将上面的代码拆开来写,就会更清晰.
function(){
this.myFunc = function(x){
     return // 返回的结果
   }
}
如果把它单独拿出来是不是就更清晰了呢!?是的这个其实就是构造函数中的一种写法,如果你想了解更多关于构造函数的内容可以查阅 javascript面向对象——constructor属性(构造函数属性)
里面有详细讲解,当我们创建好自定义的服务时,在 app.controller("myCtrl",["$scope","serviceName",myCtrl]);就能够调用.其实this指向的还是直接调用它的对像。
如有理解不当之处,欢迎各位老铁留言指正。谢谢!!!!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值