angularjs 自定義服務的三種方式


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方法定義服務'
    }
 
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM