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(作用 ...
随机推荐
- eclipse卡死在search for main types 20 files to index
run as application时,提示search for main types 20 files to index (*/*/*.jar)某个maven依赖jar出了问题,找不到main方法 ...
- py-day1 pycharm 的安装 以及部分设置
配置变量 用 :分割 pycharm 的安装: https://blog.csdn.net/bfqs1988/article/details/85250950 要装就装 专业版 不要汉化 破解时 ...
- JVisualVM监控本地Java进程
一.基于JVisualVM的可视化监控 1.打开C:\Program Files\Java\jdk1.8.0_131\bin下的jvisualvm.exe 2.打开后,会列出本机所有的Java进程 3 ...
- 修改 spawn node.exe" ENOENT at notFoundError问题
Ionic server启动后,出现spawn node.exe" ENOENT at notFoundError ...\node_modules\cross-spawn\lib\enoe ...
- API - .after
.after() Insert content, specified by the parameter, after each element in the set of matched elemen ...
- golang 查看代码调用关系图
go-callvis 是github上一个开源项目,可以用来查看golang代码调用关系. 安装 安装graphviz $ brew install graphviz 安装go-callvis go ...
- 大数据离线分析平台 用户数据Etl
Etl目标 解析我们收集的日志数据,将解析后的数据保存到hbase中.这里选择hbase来存储数据的主要原因就是: hbase的宽表结构设计适合我们的这样多种数据格式的数据存储(不同event有不同 ...
- 坑人的 Javascript 模块化编程 sea.js
坑人的 Javascript 模块化编程 sea.js 忧伤 加 蛋疼的 开始了 看文档 Sea.js 进行配置 seajs.config({ // 设置路径,方便跨目录调用 paths: { 'ar ...
- 【Json】Jackson将json转换成泛型List
Jackson将json转换成泛型List 获取泛型类型 /** * 获取泛型类型 * * @return */ protected Class<T> getGenericsType() ...
- SVM清晰讲解——线性可分问题
转载作者:liangdas 引言: 1995年Cortes和Vapnik于首先提出了支持向量机(Support Vector Machine),由于其能够适应小样本的分类,分类速度快等特点,性能不差于 ...