什么是服务?
- 服务就是功能。angular在一开始就帮我们定义一些功能,我们可以使用这些功能。都是一个方法或者一个对象的形式来调用指定的功能。而我们想要使用这些功能就必须要注入。
- 所谓服务就是将一些通用性的功能逻辑进行封装方便使用,AngularJs允许开发自己根据自己需求来定义的服务。
- 内置服务:
- $location
- $log
- $timeout $interval
- $http
- $filter
- 自定义服务分为三种:
- 1.factory
- 2.service
- 3.value
- 服务的本质就是一个方法或者是一个对象。所以自定义服务就是要返回一个对象或函数以供使用。
- factory
- 1.写好angular模板(创建模板,创建控制器,绑定模板/控制器)
//1.创建模板
var app = angular.module('app', []);
//2.创建控制器
app.controller('myController', ['$scope', function ($scope) {
}]);
//3.绑定模块
//4.绑定控制器
<body ng-app="app" ng-controller="myController">
</body>
app.factory('myFac',function () {
return function () {
alert(1);
}
});
//这个方法就是一个服务,想要使用服务就需要先注入。so~~~
app.controller('xmgController', ['$scope','myFac', function ($scope,myFac) {
//执行
myFac();
}]);
//1.创建模板
var app = angular.module('app', []);
//2.创建控制器
//服务在开发当中是帮我们封装一些工具方法。
app.controller('xmgController', ['$scope','xmgDate', function ($scope,xmgDate) {
//7.使用这个服务方法。
$scope.curDateTime = xmgDate.showDateTime();
}]);
//5.创建一个服务。
app.factory('xmgDate',['$filter',function ($filter) {
//6.创建一个格式化日期的方法。
function showDateTime() {
var curDate = new Date();
var dateFiler = $filter('date');
return dateFiler(curDate,'yyyy-MM-dd hh:mm:ss');
}
return {
showDateTime:showDateTime
}
}]);
//3.绑定模块
//4.绑定控制器
-
service(service自定义服务,所有的方法都是以this的方式定义.)(推荐使用)
- 1.写好angular模板(创建模板,创建控制器,绑定模板/控制器)
//1.创建模板
var app = angular.module('app', []);
//2.创建控制器
app.controller('myController', ['$scope', function ($scope) {
}]);
//3.绑定模块
//4.绑定控制器
<body ng-app="app" ng-controller="myController">
</body>
app.service('myService',function () {
this.show = function () {
alert('aa');
}
this.show2 = function () {
alert('222');
}
});
- 3.注入服务(myService)。使用这个服务调用里面的方法(show,show2),执行。
app.controller('myController', ['$scope','myService', function ($scope,myService) {
myService.show();
myService.show2();
}]);
- service自定义服务事例,把一个对象转成指定格式的字符串:
//1.创建模板
var app = angular.module('app', []);
//2.创建控制器
app.controller('xmgController', ['$scope','formData', function ($scope,formData) {
//7.注入服务,并使用。
var obj = {
name:'gxq',
age:'20'
}
alert(formData.formString(obj));
}]);
//5.创建一个服务
app.service('formData',function () {
//6.把一个对象转成指定格式的字符串, 转成:name=xmg&age=10
//方法
this.formString = function (obj) {
var queryStr = '';
for(var key in obj){
queryStr += key+'='+obj[key]+'&'
}
return queryStr.slice(0,-1);
}
});
//3.绑定模块
//4.绑定控制器
- value
- value表现形式上是一个服务,本质上可以看做一个常量。
//1.创建模板
var app = angular.module('app', []);
//2.创建控制器
app.controller('xmgController', ['$scope','apiKey', function ($scope,apiKey) {
alert(apiKey);
}]);
//服务
app.value('apiKey','asdfasdfasdf146');
//3.绑定模块
//4.绑定控制器
- 页面上就会弹出 'asdfasdfasdf146'