控制器的作用是在$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. shell判断文件后缀名是否为特定字符串

    如果文件是 .css文件 或 .js文件,则进行处理. if [ "${file##*.}"x = "css"x ]||[ "${file##*.}& ...

  2. 用VS2010打开VS2012项目

    1.修改解决方案文件,即.sln文件: 用记事本打开.sln文件,把其中的 Microsoft Visual Studio Solution File, Format Version 12.00 # ...

  3. DB2有五种约束

    DB2有五种约束: NOT NULL 约束是这样一种规则,它防止在表的一列或多列中输入空值. 唯一约束(也称为唯一键约束)是这样一种规则,它禁止表的一列或多列中出现重复值.唯一键和主键是受支持的唯一约 ...

  4. 2017/2/11CSS基础

    一:html中div: 1.DIV标签应用于 Style Sheet(样式表)方面会更显威力,它最终目的是给设计者另一种组织能力,有 Class.Style.title.ID 等属性. 2.<d ...

  5. django 静态文件

    django中的静态文件,如图片,css样式jquery等等 在url最下面加上 from django.conf.urls.static import staticfrom django.conf ...

  6. [ExecuteInEditMode]

    ExecuteInEditMode属性的作用是在EditMode下也可以执行脚本.Unity中默认情况下,脚本只有在运行的时候才被执行,加上此属性后,不运行程序,也能执行脚本. 与PlayMode不同 ...

  7. Codeforces Round #543 (Div. 2) D 双指针 + 模拟

    https://codeforces.com/contest/1121/problem/D 题意 给你一个m(<=5e5)个数的序列,选择删除某些数,使得剩下的数按每组k个数以此分成n组(n*k ...

  8. boost--asio

    1.asio综述 asio的核心类是io_service,它相当于前摄器模式的Proactor角色,在异步模式下发起的I/O操作,需要定义一个用于回调的完成处理函数,当I/O完成时io_service ...

  9. TCP/IP协议(5):传输层之TCP

    一.TCP报文 上图为TCP报文的格式,可以看到TCP头部占20个字节,其中红色圆圈中每一项占一位,表示TCP报文的类型,置1表示该项有效. SYN表示建立连接.    FIN表示关闭连接.    A ...

  10. Linux系统下修改环境变量PATH路径

    方法一: PATH=$PATH:/etc/apache/bin 该方法只对当前会话有效,每次注销或者拿出系统,该设置就会无效 方法二: vi /etc/profile 在适当的位置写入:PATH=$P ...