angularjs探秘<五> 举足轻重的scope
scope在angular中的作用可谓举足轻重,不理解scope就不会angular;
scope是应用在 HTML (view) 和 JavaScript (controller)之间的纽带。
scope是一个js对象(pojo),有可用的方法和属性(即定义在controller中的所有属性和函数)。
对于scope的定义和作用在第三篇有提到过。
scope在定义controller时首先被注入,然后作为参数被引用,controller中的所有属性和函数皆以scope为对象声明的属性和函数,在view(HTML)中使用controller的属性及函数都不需要加scope
<div ng-controller="contr_1">
<ul ng-repeat="x in list">
<li ng-bind="x"></li>
</ul>
</div>
MyApp.controller("contr_1",["$scope",function($scope){
$scope.list=['html','javascript','jquery','css','angularjs'];
$scope.c1_title="标题C1";
}]);
========================================================================================================================================
scope的作用范围
先看个例子:
MyApp.controller("contr_1",["$scope",function($scope){
$scope.c1_title="标题C1";
}]); MyApp.controller("contr_2",["$scope",function($scope){
$scope.c2_title="标题C2";
}]);
<div ng-controller="contr_1">
<h1 ng-bind="c1_title"></h1> <!--显示 标题C1-->
</div>
<div ng-controller="contr_2">
<h1 ng-bind="c1_title"></h1> <!--不显示-->
<h1 ng-bind="c2_title"></h1> <!--显示 标题C2-->
</div>
这个例子中 contr_1 的作用范围仅是 contr_1 所属的div的范围,所以第二个 c1_title 获取不到值scope超出范围了。
========================================================================================================================================
根scope
根scope存在于ng-app上,也就是说ng-app范围有多大,根scope作用范围就有多大;ng-app一个页面有且只有一个,同样根scope也是有且只有一个。
<div ng-controller="contr_1">
<h1 ng-bind="c1_title"></h1> <!--显示 标题C1-->
<h1 ng-bind="title"></h1> <!--显示 我是全局scope-->
</div>
<div ng-controller="contr_2">
<h1 ng-bind="title"></h1> <!--显示 我是全局scope-->
<h1 ng-bind="c1_title"></h1> <!--不显示-->
<h1 ng-bind="c2_title"></h1> <!--显示 标题C2-->
</div>
<!--js-->
MyApp.controller("contr_1",["$scope","$rootScope",function($scope,$rootScope){
$scope.c1_title="标题C1";
$rootScope.title="我是全局scope";
}]); MyApp.controller("contr_2",["$scope",function($scope){
$scope.c2_title="标题C2";
}]);
这里尽管 $rootScope 在 contr_1 中定义其属性,但在全局都能使用$rootScope定义的属性;$rootScope有且只有一个,若有多个同名属性或函数,默认取最后一个属性或函数。
angularjs探秘<五> 举足轻重的scope的更多相关文章
- AngularJS中Directive指令系列 - scope属性的使用
文章是转的,我做下补充.原文地址:https://segmentfault.com/a/1190000002773689 每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部 ...
- JavaScript文件中调用AngularJS内部方法或改变$scope变量
需要在其他JavaScript文件中调用AngularJS内部方法或改变$scope变量,同时还要保持双向数据绑定: 首先获取AngularJS application: 方法一:通过controll ...
- Javascript教程:AngularJS的五个超酷特性
AngularJS是一个超棒的javascript框架,不单单对于开发人员来说非常有吸引力,对于UI设计师来说也同样出色.在这篇教程中,我们将简单的介绍AngularJS几个重量级必备特性,并且介绍它 ...
- AngularJS的五个超酷特性
AngularJS是一个超棒的javascript框架,不单单对于开发人员来说非常有吸引力,对于UI设计师来说也同样出色.在这篇教程中,我们将简单的介绍AngularJS几个重量级必备特性,并且介绍它 ...
- angularjs探秘<四> 双向数据绑定
双向数据绑定是angularjs的一大特性,这个特性在实际开发中省了不少事儿.之前第二篇提过数据绑定,这一篇从实际开发的案例中具体看下双向数据绑定的便捷. 首先看一个场景: 在 注册/登录 中经常遇到 ...
- (转)构建自己的AngularJS,第一部分:Scope和Digest
原翻译链接:https://github.com/xufei/Make-Your-Own-AngularJS/edit/master/01.md 原文链接:http://teropa.info/blo ...
- angularjs探秘<一>
首先聊聊angularjs是啥. 首先AngularJS 是一个 JavaScript 框架.(PS:其实就是外部引用的js文件) 所以AngularJS的使用依然是外部引用js文件. 附上引用地址 ...
- AngularJS 讲解五, Factory ,Service , Provider
一. 首先说一下,为什么要引入Factory,Service和Provider这三个Service层. 1.因为我们不应该在controller层写入大量的业务逻辑和持久化数据,controller层 ...
- 关于AngularJS学习整理---浅谈$scope(作用域) 新手必备!
作为初次接触 AngularJS的新手,想要深层理解里面的内容短时间还是不可能的,所以标题写了浅谈字样,以下内容是参考各位大神以及相关书籍整理加个人理解,出现错误的地方请大家指正. $scope(作用 ...
随机推荐
- 同步中的四种锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock
为了更好的支持并发程序,JDK内部提供了多种锁.本文总结4种锁. 1.synchronized同步锁 使用: synchronized本质上就2种锁: 1.锁同步代码块 2.锁方法 可用object. ...
- golang 原子操作函数
golang中的原子操作在sync/atomic package中. 下文以比较和交换操作函数为例,介绍其使用. CompareAndSwapInt32 比较和交换操作是原子性的. // Compar ...
- Zookeeper 配置集群环境详解
在Linux环境下安装zookeeper 在Linux环境下安装zookeeper 1. 将zookeeper-3.4.13.tar.gz复制到linux操作系统 2. 通过p ...
- Linux rcp命令详解
Linux rcp命令 Linux rcp命令用于复制远程文件或目录. rcp指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件 ...
- Linux命令之shutdown
shutdown命令安全地将系统关机. 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的.因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失 ...
- Mysql权限速查表以及权限详解
一.前言 很多文章中会说,数据库的权限按最小权限为原则,这句话本身没有错,但是却是一句空话.因为最小权限,这个东西太抽象,很多时候你并弄不清楚具体他需要哪 些权限. 现在很多mysql用着root账户 ...
- 跟着未名学 - 录屏套件 Camtasia Studio
目录 Camtasia Recorder. 1 Camtasia Studio.. 2 时间线... 2 渲染... 5 Camtasia MenuMaker. 6 Camtasia Play. 6 ...
- Centos7 安装sz,rz命令
yum install lrzsz 我记得以前某个我敬佩的人说过压缩分很多种,有空,补充这篇笔记.加油~
- linux下recv 、send阻塞、非阻塞区别和用法
非阻塞IO 和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明: 基本概念: 阻塞IO:: socket 的阻塞模式 ...
- 记一次包含iframe的需要滚动的元素不能滚动到底部的问题
一个包含上头部.下部模块(包含左右两边模块:侧边栏.内容区域)的页面 前提条件,内容区域: 1.元素高度需要自适应屏幕高度 2.里面内容足够长时,可以滚动 3.包含了一个iframe嵌入的内容很长的页 ...