【AngularJS】——核心特性之服务
|
在之前几篇文章中,提到了AngularJS几个核心特性,今天继续来看看ng的服务(service)。
1、简单介绍 首先服务是一个单例,即无论这个服务被注入到任何地方,对象始终只有一个实例。
2、定义服务如同指令一样,系统内置的服务以$开头,我们也可以自己定义一个服务。定义服务的方式有如下几种:
※使用Module的factory方法
用代码说明如下:
var yxmTestServices = angular.module('yxmTestServices',[]);
yxmTestServices.factory('facetorytest',['$window',//factory方式
function($window){
var test = {
firstname:"san",lastname:function(){
return "zhang";
}
};
$window.alert('aaaa'); //内置服务可以注入
return test;
}
]);
yxmTestServices.service('servicetest',//service方式
function($window){
$window.alert('bbbb'); //内置服务可以注入
this.firstname = "san";
this.lastname = function(){
return "zhang";
}
}
]);
yxmTestServices.provider('providertest',[ //provider方式,内置服务不可以注入
function(){
this.test = {
"firstname":"san","lastname":"zhang"
}
this.$get = function () {
return this.test;
};
}
]);
3、服务调用congtroller调用定义模块,controller.js
//以注入的方式来调用yxmTestControllers.controller('TestCtrl',['$scope',"facetorytest","servicetest","providertest",function($scope,facetory111,service111,provider111) { //自定义,服务名称
$scope.facetorytest = facetory111.firstname+" "+facetory111.lastname();
$scope.servicetest = service111.firstname+" "+service111.lastname();
$scope.providertest = provider111.firstname+" "+provider111.lastname;
}
]);
创建app.js把service和controller结合到一起。app.js
/* App Module */
var yxmTestApp = angular.module('yxmTestApp',[
'ngRoute','yxmTestControllers',//上面定义的controller
'yxmTestServices' //上面自定义的服务
]);
HTML调用显示
<!doctypehtml>
<htmllang="en"ng-app="yxmTestApp">
<head>
//各种引用
</head>
<body>
<divng-controller="TestCtrl">
<p>{{facetorytest}}</p>
<p>{{servicetest}}</p>
<p>{{providertest}}</p>
</div>
</body>
</html>
值得注意的是,Angular services依赖注入的规范:自定义的service要写在内建的Angular services之后,自定义的service之间是没有先后顺序的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
