zoukankan      html  css  js  c++  java
  • AngularJS(15)-依赖注入

    AngularJS 依赖注入


    什么是依赖注入

    wiki 上的解释是:依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分。

    该模式分离了客户端依赖本身行为的创建,这使得程序设计变得松耦合,并遵循了依赖反转和单一职责原则。与服务定位器模式形成直接对比的是,它允许客户端了解客户端如何使用该系统找到依赖

    一句话 --- 没事你不要来找我,有事我会去找你。

    AngularJS 提供很好的依赖注入机制。以下5个核心组件用来作为依赖注入:

    • value
    • factory
    • service
    • provider
    • constant                  
    <!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/html">
    <head>
        <meta charset="UTF-8">
        <title>依赖注入DI</title>
        <script src="angular-1.4.1/angular.min.js"></script>
    </head>
    <body>
        <div ng-app="mainApp" ng-controller="CalcController">
            <p>输入一个数字:<input type="number" ng-model="number"></p>
            <button ng-click="square()">X*X</button>
            <p>结果:{{result}}</p>
        </div>
    </body>
    <script>
        var mainApp = angular.module("mainApp", []);
    
    //    AngularJS 中通过 provider 创建一个 service、factory等(配置阶段)。
    //    Provider 中提供了一个 factory 方法 get(),它用于返回 value/service/factory。
        // 使用 provider 创建 service 定义一个方法用于计算两数乘积
        mainApp.config(function($provide) {
            $provide.provider('MathService', function() {
                this.$get = function() {
                    var factory = {};
    
                    factory.multiply = function(a, b) {
                        return a * b;
                    }
                    return factory;
                };
            });
        });
    
    //    Value 是一个简单的 javascript 对象,用于向控制器传递值(配置阶段):
        mainApp.value("defaultInput", 5);
    
    //    factory 是一个函数用于返回值。在 service 和 controller 需要时创建。
    //    通常我们使用 factory 函数来计算或返回值
        mainApp.factory('MathService', function() {
            var factory = {};
    
            factory.multiply = function(a, b) {
                return a * b;
            }
            return factory;
        });
    
        mainApp.service('CalcService', function(MathService){
            this.square = function(a) {
                return MathService.multiply(a,a);
            }
        });
    
        mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {
            $scope.number = defaultInput;
            $scope.result = CalcService.square($scope.number);
    
            $scope.square = function() {
                $scope.result = CalcService.square($scope.number);
            }
        });
    
    </script>
    </html>
    

     运行结果:

  • 相关阅读:
    加解密工具类(含keystore导出pfx)
    Java使用数字证书加密通信(加解密/加签验签)
    关于javax.crypto.BadPaddingException: Blocktype错误的几种解决方法
    产生定长的随机数
    数字证书生成--加密密/加签验签
    随机指定范围内N个不重复的数
    sql2012还原sql2008备份文件语句
    uploadify API
    海量数据处理分析
    .net经验积累
  • 原文地址:https://www.cnblogs.com/yk123/p/5917469.html
Copyright © 2011-2022 走看看