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的更多相关文章

  1. AngularJS中Directive指令系列 - scope属性的使用

    文章是转的,我做下补充.原文地址:https://segmentfault.com/a/1190000002773689 每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部 ...

  2. JavaScript文件中调用AngularJS内部方法或改变$scope变量

    需要在其他JavaScript文件中调用AngularJS内部方法或改变$scope变量,同时还要保持双向数据绑定: 首先获取AngularJS application: 方法一:通过controll ...

  3. Javascript教程:AngularJS的五个超酷特性

    AngularJS是一个超棒的javascript框架,不单单对于开发人员来说非常有吸引力,对于UI设计师来说也同样出色.在这篇教程中,我们将简单的介绍AngularJS几个重量级必备特性,并且介绍它 ...

  4. AngularJS的五个超酷特性

    AngularJS是一个超棒的javascript框架,不单单对于开发人员来说非常有吸引力,对于UI设计师来说也同样出色.在这篇教程中,我们将简单的介绍AngularJS几个重量级必备特性,并且介绍它 ...

  5. angularjs探秘<四> 双向数据绑定

    双向数据绑定是angularjs的一大特性,这个特性在实际开发中省了不少事儿.之前第二篇提过数据绑定,这一篇从实际开发的案例中具体看下双向数据绑定的便捷. 首先看一个场景: 在 注册/登录 中经常遇到 ...

  6. (转)构建自己的AngularJS,第一部分:Scope和Digest

    原翻译链接:https://github.com/xufei/Make-Your-Own-AngularJS/edit/master/01.md 原文链接:http://teropa.info/blo ...

  7. angularjs探秘<一>

    首先聊聊angularjs是啥. 首先AngularJS 是一个 JavaScript 框架.(PS:其实就是外部引用的js文件) 所以AngularJS的使用依然是外部引用js文件. 附上引用地址 ...

  8. AngularJS 讲解五, Factory ,Service , Provider

    一. 首先说一下,为什么要引入Factory,Service和Provider这三个Service层. 1.因为我们不应该在controller层写入大量的业务逻辑和持久化数据,controller层 ...

  9. 关于AngularJS学习整理---浅谈$scope(作用域) 新手必备!

    作为初次接触 AngularJS的新手,想要深层理解里面的内容短时间还是不可能的,所以标题写了浅谈字样,以下内容是参考各位大神以及相关书籍整理加个人理解,出现错误的地方请大家指正. $scope(作用 ...

随机推荐

  1. 运用MQTT-JMeter插件测试MQTT服务器性能

    今天我们介绍XMeter团队带来的新版MQTT-JMeter插件,您可以更为方便地添加MQTT连接.发布.订阅取样器,构造组合的应用场景,例如背景连接.多发少收.少发多收,计算消息转发时延等.利用该插 ...

  2. NET设计模式 第二部分 创建型模式(5):原型模式(Prototype Pattern)

    原型模式(Prototype Pattern) ——.NET设计模式系列之六 Terrylee,2006年1月 概述 在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构.这 ...

  3. java程序控制

    一.软件生命周期 什么是软件: 软件是程序员根据需求用计算机的语言去编写一系列的指令的集合,能让计算机快速去自动执行.1.1做市场调研----->调研报告书 ======项目经理 1.2可行性分 ...

  4. Linux rcp命令详解

    Linux rcp命令 Linux rcp命令用于复制远程文件或目录. rcp指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件 ...

  5. 【java】public,private和protected

    public表示紧随其后的元素对任何人都是可用的,而private这个关键字表示除类型创建者和类型内部方法之外的任何人都不能访问的元素.protected关键字与private作用相当,差别仅在于继承 ...

  6. MySQL的瑞士军刀

    这里主要讲mysql运维中的一些主要工具,这些工具可能大家都用过,特别是系统管理员或者做linux服务器维护的同学可能都知道这些小工具,这里讲得会比较多一些,除了系统监控的小工具,还包括一些mysql ...

  7. Thinkphp自定义标签

    1.定义TagLib目录和文件  TagLibSmarTop.class.php 2.配置文件 <?php return array( 'APP_AUTOLOAD_PATH'=>'@.Ta ...

  8. Azure 认知服务 (3) 计算机视觉API - 分析图像,使用C#代码

    <Windows Azure Platform 系列文章目录> 在上一节中Azure 认知服务 (2) 计算机视觉API - 分析图像,笔者介绍了如何使用API测试控制台进行调试. 本章将 ...

  9. 微信h5支付demo微信H5支付demo非微信浏览器支付demo微信wap支付

    服务项目 新手技术咨询 企业技术咨询 定制开发 服务说明 QQ有问必答 QQ.微信.电话 微信开发.php开发,网站开发,系统定制,小程序开发 价格说明 200元/月 1000/月 商议       ...

  10. 使用socket.io client 开发时兼容IE低版本的办法

    使用socket.io client 开发时兼容IE低版本的办法 socket.io提供了针对各个版本浏览器的‘socket’功能的封转:websocket,长连接,流,flash什么的.给你格式化下 ...