在例子中我们使用my-前缀(比如my-derictive)。 当AngularJS在DOM中遇到具名的指令时,会去匹配已经注册过的指令,并通过名字在注册过的对象中查找。...创建一个同当前作用域相隔离的作用域对象。...隔离作用域 通常情况下,当我们需要创建可复用的组建时,我们需要的就是具有隔离作用域的指令。它不依赖于上下文或者说是父级的作用域,所以可以随意迁移,不需要考虑依赖数据的问题。 ...隔离作用域实现起来很简单,只要将自定义指令返回对象中“scope”值写成“{}”就行。...使用隔离作用域时,可以将指令内部的隔离作用 域,同指令外部的作用域进行数据绑定: * 本地作用域属性:使用@符号将本地作用域同DOM属性的值进行绑定 * 双向绑定:通过=可以将本地作用域上的属性同父级作用域上的属性进行双向的数据绑定
上篇《AngularJS入门心得3——HTML的左右手指令》初步介绍了指令的概念和作用。...指令的内部可以访问外部指令的作用域,并且模板也可以访问外部的作用域对象。为了将作用域传递进去,scope参数的值必须通过{}或true设置成隔离作用域。...如果没有设置scope参数,那么指令内部的作用域将被设置为传入模板的作用域。 ...从script.js中我们可以看出,加入了参数transclude和templateUrl,这两个是配合使用的。...显示到my-dialog.html中的div标签中。同时,{{name}}能够读取到指令外的作用域,即控制器中scope.name的值。
AngularJS 作用域相关的一个坑(就是上文中 ng-if 产生一级作用域的坑,其实也是 javascript 原型链继承中值类型继承的坑。...因为使用 controllerAs 的话 view 上所有字段都绑定在一个引用的属性上,比如 vm.xx,所以坑不再存在)。...在 AngularJS 中,module 和 $provide 都可以提供依赖项的注册;内置的 injector 可以获取对象(自动完成依赖注入);依赖关系的声明,就是前面问题中提到的那样。..., iAttrs, controller) { … } iElement为编译后的element,已经与作用域关联起来,所以可以数据绑定 如果指令只进行DOM的修改,不进行数据绑定,那么配置在compile...函数中,如果指令要进行数据绑定,那么配置在link函数中。
terminal:Boolean,布尔型 作用:让angularJS停止在 当前元素 上比 本定义的指令 优先级 低 的所有 指令,相同优先级的指令还会执行 可以参考:ngView 和...,参数为:tElement,tAttrs 返回值是:代表模板的字符串 参数中:tElement,tAttrs 的t代表 template 是相对于 instance 的 作用:就是将多个DOM元素封装在一起...嵌入 另外一个 指令中 实现的目的就是:指令的内部可以访问外部指令的作用域 这个时候有个前提条件就是:scope选项必须是通过{}或者true设置成隔离作用域(独立作用域) controller:String...作用是:将一些特殊的服务注入到本指令中 函数: function(scope,element,attrs,transclude,otherInjectables) scope:与指令元素相关的当前的作用域... 被注入到指令中 element 当前指令对应的元素 attrs 当前元素 属性 组成的对象 比如id class 等,是键值对的形式 transclude 嵌入连接函数 controllerAs
1.MVC中的控制器 AngularJS的控制器主要为了把模型和视图连接在一起。大多数业务逻辑操作都会放在视图对应的控制器中。...当然如果我们能够把业务逻辑放到后端的REST服务中,就可以开发轻量级AngularJS应用。 涉及到多个控制器中使用的业务逻辑,需要放到一个公共的服务中,然后把改服务注入使用到该业务逻辑的控制器中。...3.控制器的作用 3.1 在控制器中初始化模型(添加属性) 创建控制器并将它附加到DOM元素之后,AngularJS会创建一个子作用域。子作用域保存着对应控制器的数据模型。...但是子级作用域和父级作用域中有相同的属性,子级使用自己的作用域。这个时候子级作用域要访问父级作用域的属性可以通过$parent。类似JavaScript本身的原型链方式。...如果有多个控制器并行,或者多个层级的嵌套,我们有时很难区分在视图上使用时哪个控制器下的属性,可以使用ControllerAs来避免这个问题。
toc 为什么需要前端框架 为什么2016年的今天仍然可以学习Angular 1 和jQuery 的不同 学习AngularJS 1 作用域、数据双向绑定、模块 Angualr 1实现双向绑定的脏检查...作用域、数据双向绑定、模块 作用域(scope)是AngualrJs中的基础概念,一般而言,一个controller一个scope , 每个controller中内置一个数据模型对象scope。...如果一般使用并不需要了解,使用内置的指令已经可以完成绝大多数功能。 AngularJs中本身以及内置了大量的指令,例如, ng-if , ng-repeat , 甚至ng-controller。...,算是AngularJS中高阶能够,可以从下面三点简单理解的是: scope字段,设定指令的作用域。...能够隔离scope,甚至能够灵活的方式和其他scope交互,既可以使用=强大的双向绑定,而且AngularJs 1.5 scope中 的功能。
AngularJS 中的 controllerAs Controller 在 AngularJS 应用中可以说是无处不在, 可以在 html 中通过 ngController 指令来指定 Controller...' }) 上面用法在 AngularJS 的社区、示例程序中非常普遍。...在 AngularJS 的文档中是这样说的: one binds methods and properties directly onto the controller using this: ng-controller...controllerAs 将直接绑定 Controller 的属性和方法, 而不使用 controllerAs 将绑定到为 Controller 注入的 $scope 参数, 下面用一个具体的例子来说明一下...: 不使用 controllerAs 指令时, 通常我们这样做: angular .module('app', []).
2) 当调用 $digest 的时候,只触发当前作用域和它的子作用域上的监控,但是当调用 $apply 的时候,会触发作用域树上的所有监控。 什么时候手动调用 $apply() 方法?...ng-click中写的表达式,能使用JS原生对象上的方法,比如Math.max之类的吗?为什么? 不可以。...在使用controller的时候,为控制器注入$window与$scope,这个时候controller中的属性与方法是属于$scope的,而使用controllerAS的时候,可以将controller...对象,依次解析根节点后代,根据多种条件查找指令,并完成每个指令相关的操作(如指令的作用域,控制器绑定以及transclude等),最终返回每个指令的链接函数,并将所有指令的链接函数合成为一个处理后的链接函数...应用骨架 AngularJs $compile编译服务与指令 玩转Angular1(14)--使用$compile编译指令 Angular中$compile源码分析 angularjs使用$compile
/statistic.html', controller: 'StatisticCtrl', requiresLogin: true, }) 在不涉及到指令的情况下...说明StatisticController控制器没有起到该起的作用,话句话说,就是StatisticController失效,所以需要注册到boot.js以激活使用 (2)controlleras参数的使用...为了弄清楚这个controllerAs参数的使用,将这里的controllerAs:'usesrs'改为了controllerAs:'users123' 同时将statistic.html对应的users...设定的参数值一定要与页面中的变量同名,否则controllerAs参数失效。...另外声明一点,通过使用controllerAs这个参数,避免了$scope的使用,使得在StatisticController.js中大幅减少了$scope的出现,简化了代码。
}表示创建一个全新的隔离作用域。...当你想要创建一个可重用的组件时隔离作用域是一个很好的选择,通过隔离作用域我们确保指令是‘独立’的,并可以轻松地插入到任何HTML app中,并且这种做法防止了父作用域被污染。...工厂方法一般在模块中使用。 ? 九、AngularJs继承: AngularJS中没有提供内建的用于继承的特性,AngularJS组件中使用普通的JavaScript继承模式。...H1始终显示world,H2中会显示键入值。 ? H1,H2都显示键入值。 2)控制器的继承:子控制器的作用域将会原型继承父控制器的作用域。...因此当你需要重用来自父控制器中的功能时,你所要做的就是在父作用域中添加相应的方法。这样一来,自控制器将会通过它的作用域的原型来获取父作用域中的所有方法。 ?
一、什么是AngularJS 1、AngularJS是一组用来开发web页面的框架、模板以及数据绑定和丰富UI的组件; 2、AngularJS提供了一系列健壮的功能,以及将代码隔离成模块的方法; 3、AngularJS...当scope设置为true时,会从父作用域继承并创建一个新的作用域对象。有三种绑定策略@ = &。...AngularJS应用中的服务是一些用依赖注入捆绑在一起的、可替换的对象。这些对象可以提供一些封装好的逻辑操作,以供调用。...这就是程序里的依赖注入。只要声明了需要什么,在使用的时候就可以得到什么。 AngularJS中的依赖注入 第一种方式:通过方法参数名声明依赖。这种方式不推荐使用,因为js文件压缩后方法参数名会改变。...3、指令的详细定义方式。很多时候,简单的指令写法不能满足需求,需要更深度的定制指令。 4、如何进行测试。在AngularJS中,测试非常简单,可以使用其它的测试库进行测试(如Jasmine)。
为什么要用directive? ng的directive从字面上理解就是ng框架的一个指令。 ...priority (Number),可选参数(作为了解,使用几率极小)指明指令的优先级,当有多个directive定义在同一个DOM元素时,有时需要明确它们的执行顺序。...写法二使用到了html中hi2标签的title属性。...true:表示继承父作用域,并创建自己的作用域(子作用域);如果在同一个元素中有多个directive需要新的scope的话,它还是只会创建一个scope。...{}:表示创建一个全新的隔离作用域;这对于创建可复用的组件是很有帮助的,可以有效防止读取或者修改父级scope的数据。
同时遇到了一些坑比如: controllerAs参数的使用,以及它的利与弊 Statistic的功能分为两块: 第一是数据统计,通过上篇的StatisticController控制器就能实现传值并配合...今天会讲到如何使用指令,为什么要用指令以及在编码过程中遇到的一些各色问题。 ...隔离 scope :directive 中设置 scope : { } 之所以会牵扯到这个问题,是在注入statusArr时联想到的。 ...当在directive中不添加scope声明的时候,默认是directive和controller共用scope,这会降低指令的重用性,也有可能会"弄脏"scope。...今天主要介绍的内容有: 添加一个新的页面用于存放statistic出来的数据信息和图形信息; 如何引入D3引擎; 为什么要使用指令; 我的代码逻辑中如何使用指令; html的命名规范坑
To do this, we can use a directive’s scope option: 我们想要有效的分隔作用域内的指令,并且映射外面的作用域到一个指令的内部作用域,我们可以做到,通过创建创建成为隔离作用域...如果这样使用,我们将创建隔离的作用域。...:vojta,到我们的作用域,并且尝试在我们的指令中访问它。...顾名思义,指令的隔离作用域隔离了除模块中明确添加到scope对象的任何东西。这在构建可复用组件时很有用,因为它防止组件在修改你的model状态时只是你明确允许的哪些。...,使用scope选项去创建一个隔离作用域。
2.ng-app作用:告诉子元素指令是属于angularJs。 3.ng-app的值可以为空(练习),项目中一定要赋值,后面所说的模块。...AngularJS 中的数据绑定,同步了 AngularJS 表达式与 AngularJS 数据。...创建自己的 指令 除了 AngularJS 内置的指令外,我们还可以创建自定义指令。 你可以使用 .directive 函数来添加自定义的指令。...name:{{name}}', }; }]).directive('second', [ function(){ return { scope: true, // 继承父级作用域并创建指令自己的作用域...$transclude) {}, //作用域 值为{}时创建全新的隔离作用域, 值为string时为控制器名称 restrict: 'AE', // E = Element, A =
compileNode linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn); 这里directive为定义的指令...,为什么要复制一个node数组出来呢?...的参数$transclude供使用 else if (!...调用cloneFn 这边我有个疑问:为什么要先clone下呢?...链接 angularjs源码笔记(1.1)--directive compile angularjs源码笔记(1.2)--directive template angularjs源码笔记(2)--inject
AngularJS表达式 AngularJS 使用 表达式 把数据绑定到 HTML 使用{ { 表达式 }}进行数据的输出 表达式可以包含字符,操作符,变量 表达式可以写在HTML中 不支持条件判断,...AngularJS Scope(作用域) Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。 4.1....Scope作用范围 根作用域:$rootScope 作用在 ng-app 指令包含的所有HTML元素中 用 $rootScope 定义的值,可以在各个controller中使用 AngularJS 过滤器 过滤器可以使用一个**管道字符(|)**添加到表达式和指令中。 6.1....AngularJS 跨域包含 使用 ng-include 包含其他文件,使用 $sceDelegateProvider 设置跨域包含 <div ng-include
中,服务是一个函数或对象,可在你的 AngularJS 应用中使用。...$location 服务,它可以使用 DOM 中存在的对象,类似 window.location 对象,但 window.location 对象在 AngularJS 应用中有一定的局限性。...AngularJS 会一直监控应用,处理事件变化, AngularJS 使用 $location 服务比使用 window.location 对象更好。...2、包含了 ngRoute 模块作为主应用模块的依赖模块。 angular.module('routingDemoApp',['ngRoute']) 3、使用 ngView 指令。...default中来更新routeParams值为空 ,代码为: ## 如果连入第三方文件时不写协议的话: http://apps.bdimg.com/libs/angular.js/1.4.7/angular.min.js
个人意见,For your information 备注:视频教程,最近有看过大漠老师的AngularJS教程,觉得还不错,但是感觉没有一点基础还是听不懂的,或者要看好几遍(不是做广告) 3.为什么要了解...今天主要来说说AngularJS的三个指令“@”,“=”,“&”的用法和区别(这个问题困扰了我大半天,和Frank交流多次,我才明白) 1.指令作用域中的@ 作用是把当前属性作为字符串传递。 ...2.指令作用域中的= 作用是与父scope中的属性进行双向绑定。 1 指令和控制器的作用域,在JS代码实现了双向绑定,做到了控制器与指令在各自作用域内能够影响对方,也就是双向通信,具体思路与@类似,不赘述,上图: ? ...3.指令作用域中的& 主要作用是传递一个来自父scope的函数,稍后调用。 1 <!
什么是scope AngularJS 中,作用域是一个指向应用模型的对象,它是表达式的执行环境。作用域有层次结构,这个层次和相应的 DOM 几乎是一样的。作用域能监控表达式和传递事件。 ...在 HTML 代码中,一旦一个 ng-app 指令被定义,那么一个作用域就产生了,由 ng-app 所生成的作用域比较特殊,它是一个根作用域($rootScope),它是其他所有$Scope 的最顶层。...以下 HTML 中定义了三个作用域,分别是由 ng-app 指令所创建的$rootScope,parentCtrl 和 childCtrl 所创建的子作用域,这其中 childCtrl 生成的作用域又是...在对 directive 的定义中,我们添加上一个 scope:{} 属性,就为这个 directive 创建出了一个隔离作用域。...因此,如果在定义了孤立作用域的 AngularJS directive 中想要访问其父作用域的属性,则得到的值为 undefined。代码如下: 示例六:独立作用域的隔离性 <!
领取专属 10元无门槛券
手把手带您无忧上云