zoukankan      html  css  js  c++  java
  • 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方法定义服务'
        }
     
    });

  • 相关阅读:
    Android IOS WebRTC 音视频开发总结(五十)-- 技术服务如何定价?
    Android IOS WebRTC 音视频开发总结(四九)-- ffmpeg介绍
    Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会
    Android IOS WebRTC 音视频开发总结(四七)-- 深度解读国内首届WebRTC大会背后的真相
    小程序缓存二开(带有效时间)
    小程序笔记五:页面数据传递
    小程序笔记四:表单提交form
    小程序笔记三:幻灯片swiper 和图片自定义高度
    小程序笔记二:部署
    小程序笔记一:基础设置
  • 原文地址:https://www.cnblogs.com/zijuan/p/5038189.html
Copyright © 2011-2022 走看看