自定义服务

什么是服务?

  • 服务就是功能。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.绑定控制器


  • 2.自定义一个方法(也就是服务myFac)
app.factory('myFac',function () {
            return function () {
                alert(1);
            }
        });
//这个方法就是一个服务,想要使用服务就需要先注入。so~~~
  • 3.注入服务(myFac)。调用这个方法,执行。
app.controller('xmgController', ['$scope','myFac', function ($scope,myFac) {
//执行
            myFac();
        }]);
  • factory自定义服务事例,格式化日期:
        //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.绑定控制器


  • 2.自定义服务(myService)
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'

你可能感兴趣的:(自定义服务)