控制器的作用是在$scope对象上创建属性和方法,控制器的作用域是$scope,所以作用域是针对控制器来讲的。另外,控制器实例不是单例,每次都会重新实例化,不像服务是单例的。

  其是注册在模块上的,如

  angular.module('com.ngnice.app').controller('UserListCtrl', function($scope){});

  即在模块com.ngnice.app上以名字UserListCtrl注册一个函数function,以便需要时候可以找到它。通常我们用在路由或指令中。

  $stateProvider.state('user.list',{

    url:'/list',

    templateUrl:'views/user/list.html',

    controller:'UserListCtrl'

  });

  当用户访问/user/list这个URL的时候,angular-ui-router插件就会实例化一个名为UserListCtrl的控制器,同时创建一个$scope对象,这个控制器实例会在$scope对象上创建属性和方法等,这个过程称为“初始化Scope对象”,之后,加载模板,并把$scope对象传入,模板中会通过指令绑定这些属性和方法,并通过一个摘要循环(digest cycle)的过程,自动维护scope变量 和视图中的DOM节点的一致性,这个时候DOM称为“活DOM(Live DOM)”.

  指令中使用控制器也一样,也会创建一个$scope,知道控制器,并初始化$scope,最后把scope绑定到视图,把生成的Live DOM渲染出来。

  Live DOM:即把静态的DOM和$scope绑定在一起,此过程被称为编译(complie),$compile函数是它们绑定在一起的关键。如

  $compile('<ul><li ng-repeat=.....></li></ul>')(subScope);

注意:

  控制器永远都不应该去操作DOM,或是持有DOM选择器,那是我们需要使用指令和ng-model的地方。同样的,业务逻辑应该存在于服务中,而非控制器。

  另外,注入服务的方式,可以是显示或隐式方式

  angular.module('com.ngnice.app').controller('UserListCtrl', function($scope){});隐式方式,必须制定$scope,不能少了$

  angular.module('com.ngnice.app').controller('UserListCtrl', ['$scope',function(scopeObject){}]);显式方式,必须制定$scope,scopeObject相当于形参,可以任意制定。

  而且可知,$scope也是个注入的服务,是单例,而scopeObject是创建的对象。

AngularJS 控制器 Live Dom的更多相关文章

  1. AngularJS 1.x系列:AngularJS控制器(3)

    1. 控制器(Controller)定义 控制器(Controller)在AngularJS中作用是增强视图(View),AngularJS控制器是一个构造方法,用来向视图(View)中添加额外功能. ...

  2. AngularJS控制器

    AngularJS 控制器 控制 AngularJS 应用程序的数据,控制器是常规的 JavaScript 对象. 1. angular.module(name, [requires], [confi ...

  3. AngularJS 控制器

    AngularJS 控制器 控制 AngularJS 应用程序的数据. AngularJS 控制器是常规的 JavaScript 对象. AngularJS 控制器 AngularJS 应用程序被控制 ...

  4. AngularJS 控制器 ng-controller

    AngularJS 控制器 控制 AngularJS 应用程序的数据. AngularJS 控制器是常规的 JavaScript 对象. AngularJS 应用程序被控制器控制. ng-contro ...

  5. angularjs控制器之间通信,事件通知服务

    service要记住一点就是所有的services都是singleton(单例)的,service更多的是做一些业务逻辑,数据交互.当然,利用单例这特点也可以用来做不同控制器间的通信.控制器间的通信也 ...

  6. AngularJS中的DOM与事件

      前 言 AngularJS中的DOM与事件   AngularJS 为 HTML DOM 元素的属性提供了绑定应用数据的指令.  ng-disabled="true/false" ...

  7. AngularJS学习之旅—AngularJS 控制器(六)

    1.AngularJS 控制器 AngularJS 应用程序被控制器控制. ng-controller 指令定义了应用程序控制器. 控制器是 JavaScript 对象,由标准的 JavaScript ...

  8. AngularJS控制器和AngularJS过滤器的学习(3)

    前面简单的学习了AngularJS的表达式和指令,就可以说大概对AngularJS有了一定的了解吧,嘿嘿,下面就来总结学习一下AngularJS的控制器和过滤器哦. 说起来AngularJS控制器,其 ...

  9. AngularJS:HTML DOM

    ylbtech-AngularJS:HTML DOM 1.返回顶部 1. AngularJS HTML DOM AngularJS 为 HTML DOM 元素的属性提供了绑定应用数据的指令. ng-d ...

随机推荐

  1. Luogu 2822[NOIP2016] 组合数问题 - 数论

    题解 乱搞就能过了. 首先我们考虑如何快速判断C(i, j ) | k 是否成立. 由于$k$非常小, 所以可以对$k$分解质因数, 接着预处理出前N个数的阶乘的因数中 $p_i$ 的个数, 然后就可 ...

  2. 11. pt-heartbeat

    pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop ------------------------------------- ...

  3. 谁说delphi没有IOCP库,delphi新的IOCP类库,开源中

    DIOCP Demo说明 下载地址 https://code.google.com/p/diocp/ 特地为DIOCP开设了一个群:320641073,欢迎学习的IOCP的童鞋进入讨论. 核心作者:  ...

  4. mysql官网

    https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

  5. dirname(__FILE__)

  6. Vuebnb 一个用 vue.js + Laravel 构建的全栈应用

    今年我一直在写一本新书叫全栈Vue网站开发:Vue.js,Vuex和Laravel.它会在Packt出版社在2018年初出版. 这本书是围绕着一个案例研究项目,Vuebnb,简单克隆Airbnb.在这 ...

  7. [JAVA]多线程下如何确定执行顺序性

    最近在讨论一个下载任务:要求文件下载后进行打包,再提供给用户下载: 如何确保打包的线程在所有下载文件的线程执行完成后进行呢? 看看下面三个兄弟的本事: CountDownLatch.CyclicBar ...

  8. Python 中Lambda 表达式 实例解析

    Lambda 表达式 lambda表达式是一种简洁格式的函数.该表达式不是正常的函数结构,而是属于表达式的类型.而且它可以调用其它函数. 1.基本格式: lambda 参数,参数...:函数功能代码 ...

  9. spoj 7258 SUBLEX(求第k大字串

    其实对sam的拓扑排序我似懂非懂但是会用一点了. /** @xigua */ #include <stdio.h> #include <cmath> #include < ...

  10. 进度条的制作unity

    不说了直接上代码: LoadingPanel: using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityE ...