factory、service、provider

我们先通过一段代码来认识一下factoryserviceprovider

var myApp = angular.module('myApp', []);
/*
 * Factory
 */
myApp.factory('Factory', function() {
    return {
        sayHello: function() {
            return "Hello, 张先生";
        }
    };
});
/*
 * Service
 */
myApp.service('Service', function() {
    this.sayHello = function() {
        return "Hello, 张先生";
    };
});
/*
 * Provider
 */   
myApp.provider('Provider', function() {
    this.name = '先生';
    this.$get = function() {
        var name = this.name;
        return {
            sayHello: function() {
                return "Hello, " + name;
            }
        }
    };

    this.setName = function(name) {
        this.name = name;
    };
});
/*
 * config provider
 */        
myApp.config(function(myProvider){
    myProvider.setName('张先生');
});
/*
 * 方法调用
 */
function MyCtrl($scope, Provider, Factory, Service) {
    $scope.hellos = [
        Provider.sayHello(),
        Factory.sayHello(),
        Service.sayHello()];
}
factory: factory是以个可注入的function。当使用factory来创建服务的时候,相当于新创建了一个对象,然后在这个对象上新添属性,最后返回这个对象。
service: service是一个可注入的构造函数。service是单例模式的。当使用service创建服务的时候,相当于使用new关键词进行了实例化。因此,你只需要在this上添加属性和方法,服务就会自动的返回this
provider是一个可配置的factoryprovider是唯一一种可以创建用来注入到config()函数的服务的方式。想在你的服务启动之前,进行一些模块化的配置的话,就使用provider
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.每个网站的请求数据的格式基本一致,不可能一会json格式,一会xml格式。所以可以通过这点固定每个爬虫的请求格...
    薛云龙阅读 201评论 0 0
  • 我的爱人 不要对我有太多的奢望 只想和你共建一个温暖、平和的家 也许它并不那么豪华气派 我愿给你 做一顿可口的饭菜...
    黄自立清阅读 162评论 1 2
  • 二天二夜穿越昆仑山脉,唐古拉山脉一路大好风光,美景美不胜收,美醉了美翻了。
    增祥影媒阅读 389评论 0 1
  • 阅读时间:2015年11月19日,阅读时间:上午9点到10点半。 阅读书本:《粘住:让创意更有黏性》中信出版社,电...
    民大铁老师阅读 232评论 0 1
  • 时隔多年再次开始写日记,竟然还是因为那些无处安放的情感,不过换了主角不过写法更加成熟了而已。唯一不变的还是那个希望...
    穆川阅读 407评论 0 0