• factory service provide自定义服务


    1.factory

    factory , 就是你提供一个方法, 该方法返回一个对象的实例, 对于 AngularJS 的 factory 来说, 就是先定义一个对象, 给这个对象添加属性和方法, 然后返回这个对象, 例如:

    var app = angular.module('MyApp', []);
    app.factory('MyFactory', function() {
        // define result object of factory.
        var result = {};
        // add some property and method to the object
        result.greeting = 'Hello from factory.';
        // return the object;
        return result;
    });
    

    最后 controller 拿到的就是 result 对象:

    m1.controller('Aaa',['$scope','myFactory',function($scope,myFactory){
        
        console.log( myFactory);
        //这里的myFactory就是result对象
    }]);

    2.service

    service 通过 new 运算符进行实例化, 可以认为是一个类型, 只要把属性和方法添加到 this 对象上即可, 不用显式返回什么对象, 比如下面的代码:

    app.service('MyService', function() {
        this.greeting = 'Hello from service';
    });

    controller 拿到的对象就是上面代码中 this 指向的对象,

    m1.controller('Aaa',['$scope','myService,function($scope,myService){
        
        console.log(myService);
        //这里的myService就是上面this指向的对象,相当于
       var myService = new myService();
    }]);
    

    3.provider

    与 factory 和 service 稍有不同的是, provider 必须提供一个 $get 方法, $get 方法和 factory 要求是一致的, 即: 先定义一个对象, 给这个对象添加属性和方法, 然后返回这个对象, 例如:

    app.provider('MyProvider', function() {
        this.$get = function() {
            var result = {};
            result.greeting = 'Hello from provider';
            return result;
        }
    })

    最后 controller 拿到的对象就是 provider 的 $get 方法返回的对象,

    m1.provider('myRandomNum',function(){
        
        return {
            bolInt : false,
            int : function(argBol){
                if(argBol){
                    this.bolInt = true;
                }
                else{
                    this.bolInt = false;
                }
            },
            $get : function(){
                var This = this;
                return function(num1,num2){
                    return This.bolInt ? Math.round(Math.random()*(num2 - num1)) + num1 : Math.random()*(num2 - num1) + num1;
                };
            }
        };
        
    });
    
    m1.config(['myRandomNumProvider',function(myRandomNumProvider){
        
        myRandomNumProvider.int(false);
        
    }]);
    
    m1.controller('Aaa',['$scope','myRandomNum',function($scope,myRandomNum){
        
        console.log( myRandomNum(-3,6) );
      //这里的 }]);

    注意:

    provider 的特殊之处就是可以在 module 启动时进行配置, 从而达到特殊的用途

    m1.config(['myRandomNumProvider',function(myRandomNumProvider){
        
        myRandomNumProvider.int(false);
        
    }]);

     参考:http://ju.outofmemory.cn/entry/121904

     

  • 相关阅读:
    70 sudo-用来以其他身份来执行命令
    69 su -用户和工作组管理
    68 id -显示用户的id
    71 fdisk-Linux 的磁盘分区表操作工具。
    《刘润·5分钟商学院》学习总结01
    批量创建用户和密码
    20 seq 某个数到另外一个数之间的所有整数
    grub.conf文件参数详解
    dig 常用的域名查询工具
    请问-bash-4.1$ 出现故障的原理及解决办法?
  • 原文地址:https://www.cnblogs.com/toodeep/p/4987777.html
Copyright © 2020-2023  润新知