加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJs依赖注入

发布时间:2020-12-17 10:33:17 所属栏目:安全 来源:网络整理
导读:什么是依赖注入 wiki 上的解释是:依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分。 该模式分离了客户
什么是依赖注入
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));
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读