AngularJs依赖注入

什么是依赖注入
wiki 上的解释是:依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分。
该模式分离了客户端依赖本身行为的创建,这使得程序设计变得松耦合,并遵循了依赖反转和单一职责原则。与服务定位器模式形成直接对比的是,它允许客户端了解客户端如何使用该系统找到依赖

value
Value 是一个简单的 javascript 对象,用于向控制器传递值(配置阶段)

factory
factory 是一个函数用于返回值。在 service 和 controller 需要时创建。
通常我们使用 factory 函数来计算或返回值。

provider
AngularJS 中通过 provider 创建一个 service、factory等(配置阶段)。

Provider 中提供了一个 factory 方法 get(),它用于返回 value/service/factory。


创建服务的几个实例:

var app = angular.module('myApp', []);
//创建自定义服务2,使用factory 方法
app.factory('multiply', function ($window) {
    var multi = {};
    multi.exec = function (number) {
        $window.alert(number);
        return number *= 10;
    }
    return multi;
});
//创建自定义服务1,使用service方法
app.service('addition', function (multiply) {
    this.add = function (x) {
        x = multiply.exec(x);
        return x + 10;
    }
});
//创建自定义服务3,使用provider
//不支持,服务注入 $window
app.provider('division', function () {
    this.$get = function () {
        var obj = {};
        obj.exec = function (x) {
            return x / 2;
        }
        return obj;
    };
});
//可以在配置中设置
app.config(function ($provide) {
    $provide.provider('MathService', function () {
        this.$get = function () {
            var factory = {};
            factory.multiply = function (a, b) {
                return a * b;
            }
            return factory;
        };
    });
});
//要是使用定义的服务,需要再定义控制器的时候独立添加
app.value('number', 10);
app.controller('myCtrl', function ($scope, number, addition, division,MathService) {
    $scope.number = number;
    $scope.number2 = addition.add($scope.number);
    $scope.number3 = division.exec(number);
    console.info(MathService.multiply(number,3));
});


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值