首页
学习
活动
专区
圈层
工具
发布

2、Angular JS 学习笔记 – 双向数据绑定和Scope概念

嵌套的作用域可以是子作用域或者是隔离作用域。一个子作用域继承父作用域的属性,一个隔离作用户则不会继承;查看隔离作用域的更多信息; 作用域为表达式求值提供上下文。...这项安排就从指令(就是DOM)隔离了控制器。...; }); 作用域的层级结构: 每个Angular应用都只有一个root作用域,但是可能有多个子作用域; 每个应用有多个作用域,因为一些指令会创建子作用域(refer to directive documentation...你可以从dom元素上使用angular.element(aDomElement).scope()函数获取作用域。查看指令文档了解更多的关于作用域隔离的信息。...你也可以使用apply()在javascript中进入到Angular执行上下文,请记住在大多数地方(controllers,services) apply 已经被指令调用用来处理时间。

14.1K20

达观数据对AngularJS技术的思考与实践

搜索的时候,优先找自己的scope,如果没有找到就沿着作用域链向上搜索,直至到达根作用域rootScope。...Directive的几个属性: Restrict:E(元素),A(属性),C(类),M(注释) 默认值是A Scope:默认值false,表示继承父作用域,true表示继承父作用域并创建自己的作用域,{...}表示创建一个全新的隔离作用域。...当你想要创建一个可重用的组件时隔离作用域是一个很好的选择,通过隔离作用域我们确保指令是‘独立’的,并可以轻松地插入到任何HTML app中,并且这种做法防止了父作用域被污染。...2)控制器的继承:子控制器的作用域将会原型继承父控制器的作用域。因此当你需要重用来自父控制器中的功能时,你所要做的就是在父作用域中添加相应的方法。

6.6K150
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Angular源码分析之$compile

    随后,在返回的compositeLinkFn中,则是遍历linkFns,针对每个链接函数,创建起对应的作用域对象(针对创建隔离作用域的指令,创建隔离作用域对象,并保存在节点的缓存中),并处理指令是否设置了...首先则是初始化相关属性,通过遍历节点的所有指令,针对每个指令,依次判断$$start属性,优先级,隔离作用域,控制器,transclude属性判断并编译其模板,构建元素的DOM结构,最终执行用户定义的compile...在返回的nodeLinkFn中,根据用户指令的定义,如果指令带有隔离作用域,则创建一个隔离作用域,并在当前的dom节点上绑定ng-isolate-scope类名,同时将隔离作用域缓存到dom节点上; 接下来...,完成隔离作用域属性的单向绑定(@),双向绑定(=)和函数的引用(&),针对隔离作用域的双向绑定模式(=)的实现,则是通过自定义的编译器完成简单Angular语法的编译,在指定作用域下获取表达式(标示符...在publicLinkFn中,完成根节点与根作用域的绑定,并在根节点缓存指令的控制器实例,最终执行合成链接函数,完成了Angular最重要的编译,链接两个阶段,从而开始了真正意义上的双向绑定。

    1.7K50

    4、Angular JS 学习笔记 – 创建自定义指令

    To do this, we can use a directive’s scope option: 我们想要有效的分隔作用域内的指令,并且映射外面的作用域到一个指令的内部作用域,我们可以做到,通过创建创建成为隔离作用域...如果这样使用,我们将创建隔离的作用域。...顾名思义,指令的隔离作用域隔离了除模块中明确添加到scope对象的任何东西。这在构建可复用组件时很有用,因为它防止组件在修改你的model状态时只是你明确允许的哪些。...一般情况,一个作用域继承自它的父类,一个隔离的作用域则不继承。查看”DIrective Definition Object “了解更多关于隔离作用域的信息。...,使用scope选项去创建一个隔离作用域。

    5.2K20

    2-进军 angular1.x 表达式和指令

    2-表达式和指令,数据绑定 angular1.x 学习目录 1-angular 学习导航和基础 2-表达式和指令,数据绑定 3-模型和作用域 scope 4-控制器和过滤器 一 表达式 ng-init...如果有多个 ng-app 可以手动加载 // 页面加载完成后,再加载模块 angular.element(document).ready(function() { //手动加载myApp2 ng-app...name:{{name}}', }; }]).directive('second', [ function(){ return { scope: true, // 继承父级作用域并创建指令自己的作用域...$transclude) {}, //作用域 值为{}时创建全新的隔离作用域, 值为string时为控制器名称 restrict: 'AE', // E = Element, A =...,若在dom上有多个指令优先级高的先执行 replace: flase // 默认值为false 当为true是直接替换指令所在的标签 terminal: true //

    2.9K20

    angular面试问题_kafka面试题

    在Angular中有什么作用? 什么是Jasmine? 在Angular中有什么用? 什么是protractor? 单元测试 Unit Test 什么是Angular中的单元测试?...Angular UT的最佳实践 什么是TestBed,有什么作用 测试Service时,有其他依赖如何处理?...protractor是Angular专用的e2e框架。 什么是Karma? 在Angular中有什么作用? Karma是用于在浏览器环境中针对测试代码执行源代码的工具。...单元测试用于测试隔离中的单个功能,单个组件,特点是隔离和之星快。在此单元测试中,我们不能说应用程序中的一切都很好,而是仅针对单个单元或功能,即可确保正常工作。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3K20

    angularjs 指令详解

    控制器中也有一些特殊的服务可以被注入到指令当中。这些服务有: 1. $scope 与指令元素相关联的当前作用域。 2. $element 当前指令对应的元素。 3....1.当我们将scope设置为false的时候,我们创建的指令和父作用域(其实是同一个作用域)共享同一个model模型,所以在指令中修改模型数据,它会反映到父作用域的模型中。 true:继承并隔离 ?...它和父作用域不是同一个作用域。 {}:隔离且不继承  ?...3.当我们将scope设置为{}时,意味着我们创建的一个新的与父作用域隔离的新的作用域,这使我们在不知道外部环境的情况下,就可以正常工作,不依赖外部环境。...本地作用域属性:使用@符号将本地作用域同DOM属性的值进行绑定,使指令内部作用域可以使用外部作用域的变量:  @ 可以在指令中使用绑定的字符串了。   2.

    2.6K40

    angularjs学习第一天笔记

    angular.module('myApp', []);   5、作用域     angular作用域是其最主要核心特征之一,通过$scope来表示。...作用如下:       a.应用的作用域是和应用的数据模型相关联的       b.同时作用域也是表达式执行的上下文。       c....$scope 对象是定义应用业务逻辑、控制器方法和视图属性的地方。       d.作用域是视图和控制器之间的胶水       e....,甚至是系统外的组件       j.可以进行嵌套,隔离业务功能和数据       k.给表达式提供运算时所需的执行环境   6、控制器   控制器的关键词为ng-controller,其作用还是讲页面逻辑根据功能模块分割中更小模块...控制器是可以嵌套的,作用域也是嵌套的     定义使用方式如下:     var app = angular.module('模块名称', []);     app.controller('控制器名称

    2.5K30

    angularjs学习第一天笔记

    angular.module('myApp', []);   5、作用域     angular作用域是其最主要核心特征之一,通过$scope来表示。...作用如下:       a.应用的作用域是和应用的数据模型相关联的       b.同时作用域也是表达式执行的上下文。       c....$scope 对象是定义应用业务逻辑、控制器方法和视图属性的地方。       d.作用域是视图和控制器之间的胶水       e....,甚至是系统外的组件       j.可以进行嵌套,隔离业务功能和数据       k.给表达式提供运算时所需的执行环境   6、控制器   控制器的关键词为ng-controller,其作用还是讲页面逻辑根据功能模块分割中更小模块...控制器是可以嵌套的,作用域也是嵌套的     定义使用方式如下:     var app = angular.module('模块名称', []);     app.controller('控制器名称'

    2.6K10

    angularjs学习第七天笔记(系统指令学习)

    您好,接着在昨天对简单指令学习了解以后,今天开始学习了解angularjs中的系统指令   系统指令大部分都是以ng开始,这也是为什么在自定义指令命名时不要以ng开始的原因所在   系统指令在学习了分成两个部分进行学习...:基础指令、在指令中使用子作用域   第一、基础指令     基础指令由包括bool型和类bool型两类     bool型指令,就是其值是一bool值(true or false)     1.1、bool...///// 3秒后开启控件可操作 $scope.isDisable = false; }, 3000) });     第二、在指令中使用子作用域...        指令中使用子作用域,其简单的理解就是,其指令会创建一个隔离的作用子域,基础父作用域。       ...div> 姓名:请输入新增的姓名

    3.3K10

    AngularJs之Scope作用域

    在 HTML 代码中,一旦一个 ng-app 指令被定义,那么一个作用域就产生了,由 ng-app 所生成的作用域比较特殊,它是一个根作用域($rootScope),它是其他所有$Scope 的最顶层。...除了用 ng-app 指令可以产生一个作用域之外,其他的指令如 ng-controller,ng-repeat 等都会产生一个或者多个作用域。...在对 directive 的定义中,我们添加上一个 scope:{} 属性,就为这个 directive 创建出了一个隔离作用域。...因此,如果在定义了孤立作用域的 AngularJS directive 中想要访问其父作用域的属性,则得到的值为 undefined。代码如下: 示例六:独立作用域的隔离性 的读写父作用域中的属性和对象,所以在一些多个 directive 共享父作用域数据的场景下需要小心使用,很容易引起数据上的混乱。 示例代码如下: 示例九:双向绑定示例 <!

    1.9K30

    angularjs学习第七天笔记(系统指令学习)

    您好,接着在昨天对简单指令学习了解以后,今天开始学习了解angularjs中的系统指令   系统指令大部分都是以ng开始,这也是为什么在自定义指令命名时不要以ng开始的原因所在   系统指令在学习了分成两个部分进行学习...:基础指令、在指令中使用子作用域   第一、基础指令     基础指令由包括bool型和类bool型两类     bool型指令,就是其值是一bool值(true or false)     1.1、bool...///// 3秒后开启控件可操作 $scope.isDisable = false; }, 3000) });     第二、在指令中使用子作用域...        指令中使用子作用域,其简单的理解就是,其指令会创建一个隔离的作用子域,基础父作用域。       ...div> 姓名:请输入新增的姓名

    2.9K30

    【Hybrid开发高级系列】AngularJS(一)——基础专题

    然后安装Testacular单元测试程序,请运行如下命令: npm install -g testacular     3....ng-app指令的HTML标签,该标签即定义了AngularJS应用的作用域。...· 手机的数据此时与注入到我们控制器函数的作用域($scope)相关联。当应用启动之后,会有一个根作用域被创建出来,而控制器的作用域是根作用域的一个典型后继。...AngularJS的作用域理论非常重要:一个作用域可以视作模板、模型和控制器协同工作的粘接器。AngularJS使用作用 域,同时还有模板中的信息,数据模型和控制器。...想要更加深入理解AngularJS的作用域,请参看AngularJS作用域文档。 2.5 测试         测试 “AngularJS方式”让开发时代码测试变得十分简单。

    2.3K80

    angularjs学习第九天笔记(指令作用域【隔离作用域】研究)

    您好,昨天学习了指令作用域为布尔型的情况, 今天主要研究其指针作用域为{}的情况 1、当作用域scope为{}时,子作用域完全创建一个独立的作用域,   此时,子做预约和外部作用域完全不数据交互   但是...: 隔离的子作用域和外部作用域实现单向数据绑定,       及外部对应值改变,子作用域值也改变,子作用域值改变父作用域值不改变 其二、“=”:      格式为:       scope{         ...属性名称:"@"       }     子外作用域数据交互表现:       隔离的子作用域和外部作用域实现双向数据绑定,       及外部对应值改变,子作用域值也改变,子作用域值改变父作用域值也改变...  其三、“&”:       格式为:       scope{         属性名称:"&"       }     子外作用域数据交互表现:       隔离的子作用域和外部作用域实现实现函数交互... scope={&}时,隔离的子作用域和外部作用域实现实现函数交互, 及子作用域可以调用外部作用域函数

    61820

    angularjs学习第九天笔记(指令作用域【隔离作用域】研究)

    您好,昨天学习了指令作用域为布尔型的情况, 今天主要研究其指针作用域为{}的情况 1、当作用域scope为{}时,子作用域完全创建一个独立的作用域,   此时,子做预约和外部作用域完全不数据交互   但是...: 隔离的子作用域和外部作用域实现单向数据绑定,       及外部对应值改变,子作用域值也改变,子作用域值改变父作用域值不改变 其二、“=”:      格式为:       scope{         ...属性名称:"@"       }     子外作用域数据交互表现:       隔离的子作用域和外部作用域实现双向数据绑定,       及外部对应值改变,子作用域值也改变,子作用域值改变父作用域值也改变...  其三、“&”:       格式为:       scope{         属性名称:"&"       }     子外作用域数据交互表现:       隔离的子作用域和外部作用域实现实现函数交互... scope={&}时,隔离的子作用域和外部作用域实现实现函数交互, 及子作用域可以调用外部作用域函数

    47920

    Angular1.x使用小结

    2、directive   指令系统,我认为是angular1.x版本中最强大也是最复杂的部分,angular作者本身做后端出身,所以在整个指令周期也符合语言处理过程:经过编译(compile函数,会返回...'', //模版     scope:{} //为true或为对象表示隔离作用域     restrict 'ACEM'//使用方式     link:function(scope,ele,attrs...attr){return function(){}}//如果此函数存在,link函数会被忽略,因为compile函数会返回link函数     }   } });   2)关于绑定策略   独立作用域父子作用域之间交换数据的方式...,主要有三种(或说四种)   @绑定,指令属性的值可以使用表达式,但是得出来的值一定是字符串;   &绑定,表示引用绑定,主要绑定父作用域中函数,实现关注点的注入   =绑定,表示双向数据绑定   <绑定...,表示单向绑定   注意:对于&绑定的使用,主要是为了实现子作用域到父作用域的传递,个人比较喜欢vue中父子交互的方式:props in,event out。

    2.7K10

    angularJS学习之路(十七)---自定义指令

    2.factory_function 函数  在这个函数里面  一般返回一个对象,函数里面定义了这个指令的全部行为, angular.module('myApp',[]) .directive('myDirective...,参数为:tElement,tAttrs 返回值是:代表模板的字符串 参数中:tElement,tAttrs 的t代表 template 是相对于 instance 的 作用:就是将多个DOM元素封装在一起...参数可选,可以被设置为true  默认是false  或者设置为一个对象 作用:当设置为true时候,会从父作用域继承并创建一个新的作用域  新的作用域代表了什么意思,代表了它是独立的 关于这点 下篇文章详细讲解...嵌入  另外一个 指令中 实现的目的就是:指令的内部可以访问外部指令的作用域 这个时候有个前提条件就是:scope选项必须是通过{}或者true设置成隔离作用域(独立作用域) controller:String...作用是:将一些特殊的服务注入到本指令中 函数: function(scope,element,attrs,transclude,otherInjectables) scope:与指令元素相关的当前的作用域

    85510
    领券