angularjs 中可通過三種($provider,$factory,$service)方式自定義服務,以下是不同的實現形式:
// 定義module , module中注入$provide
var starterApp = angular.module('starter.controllers', [],function($provide){
// 第一種方式:使用provide的provider自定義服務
$provide.provider('getUserInfoService', function(){
this.$get = function(){
var userInfo = [{
'userName':'張三0',
'userNick':'小花0',
'age':25
},{
'userName':'張三1',
'userNick':'小花1',
'age':26
}];
return userInfo;
}
});
$provide.factory('',function(){});
$provide.service('',function(){});
});
//第二種方式 (module 的 config 方法中注入 $provide)
starterApp.config(['$provide',function($provide) {
// 使用provide的provider自定義服務(返回對象,字符串,服務,且必須通過$get方法返回)
$provide.provider('getUserAddressService', function(){
var _userAddress = '';
var service = {};
this.$get = function(){
service.setAddress = function (userAddress){
_userAddress = userAddress;
}
service.getAddress = function (){
return _userAddress;
}
return service;
}
});
// 使用provide的factory自定義服務(返回對象,服務,字符串)
$provide.factory('serviceName1', ['$http', function($http){
// var service = {};
// service.getName = function (){
// return '張三';
// }
// return service;
//
return "啊颯颯大";
}]);
// 使用provide的service自定義服務(返回對象,服務)
$provide.service('serviceName2', ['$http', function($http){
// return {
// 'name':'aa'
// };
//可直接通過this定義方法
this.getName = function (){
return '張三';
}
}])
}]);
//第三種方式(module 的 provider、service、factory 方法 推薦第三種)
starterApp.provider('serviceName3',function(){
this.$get = function (){
return '直接通過module的provider方法定義服務';
}
});
starterApp.factory('serviceName4',function(){
return '直接通過module的factory方法定義服務';
});
starterApp.service('serviceName5',function(){
return {
'message':'直接通過module的service方法定義服務'
}
});
