AngularJS 笔记之创建服务方法比较 : factory vs service vs provider 。

第一说一下劳动这个东西是为此来波及嘛的。很多时光咱们将最好多之数与逻辑都一起地于
controller 里放。这样咱们的 controller
原来越臃肿。从它的生命周期可以发现,其实 controller
应该于用之时节让初始化,不用了便一直吃废除,释放内存。因此,当我们切换或者刷新页面的当儿,angular
就会见清空当前之 controller。与用,service
才应该让用来保存应用工作逻辑与持久化的数码,并且这些多少可以在不同之
controller 之间下。

那问题来了,(学挖掘机找蓝翔吗)Angular
提供了三种植办法来创造并注册我们的 service:factory, service 和 provider

Factory :

  • 从而 factory 就是创建一个目标,为他续加属性,然后拿此目标 return
    出来。当您拿 service 传进 controller 以后,在 controller
    中者目标的性就足以经过 factory 使用了。

    • var app = angular.module(‘app’,[]);
    • app.factory(‘myFactory’,function(){
    •   var test = {};
    •   test.name = “Jason”;
    •   test.sayHello = function(){console.log(“hello world”)};
    •   return test;
    • });
      • app.controller(“myCtrl”,function($scope,myFactory){
         $scope.greet =myFactory.test.sayHello;
           //use the attrs of the obj in the factory
    • })
    • 当时大概就是 factory 的用法了。
  • Service:
    • service 是用 new 关键字实例化的。因此,你该受 this
      添加属性,然后 service 返回 this。你把 service 传进 controller
      以后,在 controller 里 this 上之习性就可据此经过 service
      来行使了。
    • app.service(‘myService’,function(){
          var _artist = “Nelly”;
          this.getAritist = function(){
          return _artist;
      }
      });
      app.controller(“myCtrl”,function($scope,myService){
          $scope.getArtist = myService.getArtist;
      });
  • Provider :

    • Providers 是唯一一种而可传进 .config() 函数的
      service。当你想使当 service
      对象启用之前,先进行模块范围之部署,那就算应该为此 provider。
    • app.provider(“myProvider”,function(){
          this._artist = ” ” ;
          this.thingFromConfig = ” ” ;
          this.$get = function(){
              var that  =  this;
              return  {
                 getArtist : function(){
                     return that._artist;
                  },
              thingOnConfig : that.thingFromConfig
              }
         },
         thingOnConfig 
      });

      app.controller(“myController”,function($scope,myProvider){
          $scope.artist = myProvider.getArtist();
          $scope.data.thingFromConfig = myProvider.thingOnConfig;
      });

      app.config(function(myProviderProvider){
          myProviderProvider.thingFromConfig = “This was set in
      config() ” ;
      })
        

       

相关文章