zoukankan      html  css  js  c++  java
  • AngularJS依赖注入

    Angular 提供了几种方法来创建并注册我们自己的 service。

    • factory
    • service
    • provider
    • value

      我们首先来创建一个module(模块),本文中的所有代码都会用到这个myModule。

     var myModule = angular.module( "myModule", [] );
    1. 用 factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。
    //第一种写法(常用)
    myModule.factory('greeting',function(){
        var service = {};
        service.greetingFun = function(name){
            alert('hello '+name);
        }
        return service;
    })
    //第二种写法
    myModule.factory('greeting',function(){
        return function(name){
            alert('hello '+name);
        }
    })

      2. service  是用"new"关键字实例化的。因此,你应该给"this"添加属性,然后 service 返回"this"。

    myModule.service('greeting',function(){
        this.greetingFun = function(name){
            alert('hello '+name);
        }
    });

      3. provider  是唯一一种你可以传进 .config() 函数的 service。当你想要在 service 对象启用之前,先进行模块范围的配置,那就应该用 provider。当  myModule.config()修改配置项时:无论何时你为一个服务定义了一个provider,这个provider的名字都是serviceProvider。在这里service是服务的名字。

    myModule.provider('greeting',function(){
        //可在此处定义变量或函数,即myModule.config()函数可以访问、修改。
        //$get内则不可以,只能用于控制器访问。
        //此处为provider与factory和service的区别。
        this.$get = function(){
            return function(name){
                alert('hello '+name);
            }
        }
    })

      4. value 值是简单的JavaScript对象

    myModule.value('greeting',function(name){
        alert('hello '+name);
    })

    详细解释

  • 相关阅读:
    [LeetCode-JAVA] Count Complete Tree Nodes
    [LeetCode-JAVA] Shortest Palindrome
    [LeetCode-JAVA] Best Time to Buy and Sell Stock IV
    [LeetCode-JAVA] Word Ladder II
    [LeetCode-JAVA] Jump Game II
    Keil开发的ARM程序main函数之前的汇编分析
    STM32平台SD卡的FatFS文件系统开发
    STM32 Cortex-M3 NMI异常
    应对STM32 Cortex-M3 Hard Fault异常
    LwIP协议栈开发嵌入式网络的三种方法分析
  • 原文地址:https://www.cnblogs.com/lixuemin/p/4864159.html
Copyright © 2011-2022 走看看