声明了一个模块和一个控制器AngularJS的处理过程

例如下面这段代码。这是一个简单的应用,声明了一个模块和一个控制器:

angular.module(‘myApp‘, [])
    .factory(‘greeter‘, function() {
        return {
            greet: function(msg) {alert(msg);}
        }
    })
    .controller(‘MyController‘,function($scope, greeter) {
        $scope.sayHello = function() {
            greeter.greet("Hello!");
        };
    });

当AngularJS实例化这个模块时,会查找 greeter 并自然而然地把对它的引用传递进去:

<div ng-app="myApp">
    <div ng-controller="MyController">
        <button ng-click="sayHello()">Hello</button>
    </div>
</div>

而在内部,AngularJS的处理过程是下面这样的:
  // 使用注入器加载应用 var injector = angular.injector([‘ng‘, ‘myApp‘]);
  // 通过注入器加载$controller服务:var $controller = injector.get(‘$controller‘);
  var scope = injector.get(‘$rootScope‘).$new();
  // 加载控制器并传入一个作用域,同AngularJS在运行时做的一样 var MyController = $controller(‘MyController‘, {$scope: scope})
上面的代码中并没有说明是如何找到 greeter 的,但是它的确能正常工作,因为 $injector会负责为我们查找并加载它。

时间: 2024-10-13 15:27:29

声明了一个模块和一个控制器AngularJS的处理过程的相关文章

angular学习之手动启动一个模块

在一个angularjs页面里面,一般只用一个ng-app,但是一个页面里面也可以同时存在多个ng-app,但是只能是平行的,不能是嵌套的,那么angularjs只能识别第一个ng-app,后面的ng-app无法被识别,这个时候就需要我们手动去启动,一般我们是用的是angularjs里面的bootstrap函数 如下:angular.element(document).ready(function(){ angular.bootstrap(document.getElementById('Id'

为您的Web项目构建一个简单的JSON控制器

摘要:无论您的项目使用的是哪种数据库后端,JavaScript Object Notation (JSON) 控制器都能简化您的开发工作.本文将带领您建立一个能够增强您的下一个开发项目的非常基础的 JSON 控制器. 您的下一个 PHP/MySQL 项目可能与您最近完成的十几个项目类似:建立一个 MySQL 数据库,创建包含 HTML 的 PHP 视图,根据需要添加 JavaScript 代码和 CSS 文件,连接到数据库,从数据库提取内容来填充视图,等等.如果您熟悉 web 开发,您一定知道分

将php作为一个模块供给Apache加载

怎么看,php有没有作为一个模块给Apache呢? Comand指令   httpd -M 很明显,并没有找的php这个模块 第一步 打开Apache的配置文件 将对话框滚动条往下拉,能看到这么一块配置 软件配置文件注释符号是# php作为模块语法: LoadModule php5_module "E:/wamp/php/php5apache2_2.dll" LoadModule[这是指令,不区分大小写,例如JavaScript定义变量关键字var] php5_module[模块名,例

Node.js -- Router模块中有一个param方法

这段时间一直有在看Express框架的API,最近刚看到Router,以下是我认为需要注意的地方: Router模块中有一个param方法,刚开始看得有点模糊,官网大概是这么描述的: 1 Map logic to route parameters. 大概意思就是路由参数的映射逻辑 这个可能一时半会也不明白其作用,尤其是不知道get和param的执行顺序 再看看源码里面的介绍: 1 2 3 Map the given param placeholder `name`(s) to the given

Python 官方代码threading模块的一个死锁的bug

Python的threading模块有一个比较严重的bug:那就是可能会让线程的等待提前结束或者延迟,具体的原因是因为线程的wait操作判断超时时依赖于实时时间,即通过time.time()获取到的时候,为了显示这个问题,请看下面的例子: from threading import Thread from threading import Event import time e = Event() stop = False class MyThread(Thread): def __init__

MPMoviePlayerViewController的使用 (不直接将播放器放到主视图控制器,而是放到一个内部模态视图控制器中)

其实MPMoviePlayerController如果不作为嵌入视频来播放(例如在新闻中嵌入一个视频),通常在播放时都是占满一个屏幕的,特别是在 iPhone.iTouch上.因此从iOS3.2以后苹果也在思考既然MPMoviePlayerController在使用时通常都是将其视图 view添加到另外一个视图控制器中作为子视图,那么何不直接创建一个控制器视图内部创建一个MPMoviePlayerController属性并且默 认全屏播放,开发者在开发的时候直接使用这个视图控制器.这个内部有一个

Sea.js 是一个模块加载器

1 模块定义define define(function(require,exports,module){ //require 引入需要的模块如jquery等 //var $ = require('./jquery'); //exports可以把方法或属性暴露给外部 exports.name = 'hi'; exports.hi = function(){ alert('hello'); } //module提供了模块信息 }); 2 使用定义好的模块seajs.use <!doctype ht

Turtle模块,一个超精简但功能齐全的绘图包

先上官方链接https://docs.python.org/3.3/library/turtle.html 再上一个GitHub上别人做的一个小程序,画小猪佩琦的,里面用到了大量常用的turtle接口.github链接https://github.com/Monster12138/- Turtle模块,一个超精简但功能齐全的绘图包 原文地址:https://www.cnblogs.com/cia2018/p/10264829.html

使用 Python 的 Socket 模块构建一个 UDP 扫描工具

译文:oschina 英文:bt3gl 当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机.这个任务还可能包含嗅探和解析网络中数据包的能力. 几周前,我曾经谈到了如何使用Wireshark来进行数据包嗅探,但如果你没有wireshark,你如何去监控网络流量呢? 这一次,Python提供了几种解决方案,今天我将一步步演示如何建立一个UDP主机发现工具.首先,我们要看我们如何处理原始套接字来编写一个简单的嗅探器,它能够查看和解析网络数据包.然后,我们将在子网内多线程运行该进程,结果将在我