`

angularjs 学习笔记

 
阅读更多

 

scope:

  • scope.$parent指向scope的父作用域;
  • scope.$$childHead指向scope的第一个子作用域;
  • scope.$$childTail指向scope的最后一个子作用域;
  • scope.$$nextSibling指向scope的下一个相邻作用域;
  • scope.$$prevSibling指向scope的上一个相邻作用域;

directives scope:

  1. 默认 (scope: false) - directive使用原有作用域,所以也不存在原型继承,这种方式很简单,但也很容易出问题——除非该directive与html不存在数据绑定,否则一般情况建议使用第2条方式。
  2. scope: true - directive创建一个子作用域, 并且会从父作用域进行原型继承。 如果同一个DOM element存在多个directives要求创建子作用域,那么只有一个子作用域被创建,directives共用该子作用域。
  3. scope: { ... } - directive创建一个独立的“Isolate”作用域,没有原型继承。这是创建可复用directive组件的最佳选择。因为它不会直接访问/修改父作用域的属性,不会产生意外的副作用。这种directive与父作用域进行数据通信有如下四种方式(更详细的内容请参考Developer Guide):

    1. = or =attr “Isolate”作用域的属性与父作用域的属性进行双向绑定,任何一方的修改均影响到对方,这是最常用的方式;
    2. @ or @attr “Isolate”作用域的属性与父作用域的属性进行单向绑定,即“Isolate”作用域只能读取父作用域的值,并且该值永远的String类型
    3. & or &attr “Isolate”作用域把父作用域的属性包装成一个函数,从而以函数的方式读写父作用域的属性,包装方法是$parse,详情请见API-$parse

 

link 和 controller区别:

 

聪明的读者可能想知道link 和 controller之间的区别, 最基本的区别就是 控制器可以导出一个API, 而子指令的link函数可以通过require来与这个API交互。

最佳实践: 当你想暴露一个API给其它的指令调用那就用controller,否则用link

 

哪些指令支持动画呢?

部分AngularJS指令支持在它的生命周期内发生重要事件时触发动画钩子,下面的表格详细说明了哪些动画事件会被触发。

Directive 支持动画
ngRepeat enter , leave , move
ngView enter , leave
ngInclude enter , leave
ngSwitch enter , leave
ngIf enter , leave
ngClass or {{class}} add , remove
ngShow & ngHide add , remove (the ng-hide class value)

对于各个动画事件的详细触发步骤,请参考API 文档

 

 

编译器compile 和 link区别

编译器是 Angular 提供的一项服务,用来遍历DOM节点,查找特定的属性。编译过程分为两个阶段:

  1. 编译:遍历DOM节点,收集所有的指令,返回一个连接函数(link func)

  2. 连接:将上一步收集到的每个指令与其所在的作用域(scope)连接生成一个实时视图。任何作用域中的模型改变都会实时在视图中反映出来,同时任何用户与视图的交互则会映射到作用域的模型中。这样,作用域中的数据模型就成了唯一的数据源。

一些如 ng-repeat 这样的指令,会为集合中的每个项目克隆一次DOM元素。由于克隆的模板只需要被编译一次,然后为每个克隆实例做一次连接,这样将编译分成编译和连接两个阶段就有效地提升了性能(译注:不用为每个克隆的实例都编译一次,只需对模板进行统一的一次编译,然后在连接阶段单独为每个实例进行到 scope 的连接即可)。

 

 

 解析define js

  sed -n '/define/p' starter.js 
  513  sed -n '/ define/p' starter.js 
  514  sed -n '/ define\(.*\),/$1/p' starter.js 
  515  sed -n '/ define\(.*\),/\1/p' starter.js 
  516  sed -n '/ define\.*,/\(1\)/p' starter.js 
  517  sed -n '/ define\*,/\(1\)/p' starter.js 
  518  sed -n '/ define\*,/\($1\)/p' starter.js 
  519  sed -n '/ define\(.*\),/\1/p' starter.js 
  520  sed -n '/ define(.*),/\1/p' starter.js 
  521  sed -n '/ define(.*),/$1/p' starter.js 
  522  sed '/ define(.*),/$1/p' starter.js 
  523  sed 's/ define(.*),/$1/p' starter.js 
  524  sed 's/ define(.*),/$1/' starter.js 
  525  sed 's/ define(.*),/\1/' starter.js 
  526  sed 's/.* define(.*),.*/\1/' starter.js 
  527  sed 's/.* define(.*),.*/$1/' starter.js 
  528  sed -n '/ define(.*),/$1/p' starter.js 
  529  sed 's/.* define(.*),.*/$1/' starter.js 
  530  sed -n 's/.* define(.*),.*/$1/' starter.js 
  531  sed -n 's/.* define(.*),.*/$1/p' starter.js 
  532  sed -n 's/.* define(.*),.*/\1/p' starter.js 
  533  sed -n '/.* define(.*),.*/\1/p' starter.js 
  534  sed -n '/ define/p' starter.js 
  535  sed -n '/ define/p' starter.js > temp.js
  536  ls
  537  vi temp.js 
  538  ls
  539  grep  -n '/\//p' temp.js 
  540  grep  -n '/.*\/.*/p' temp.js 
  541  grep  -n '/.*\/.*/p' temp.js  > t2.js
  542  sed  -n '/.*\/.*/p' temp.js  > t2.js
  543  sed  -n '/define.*\/.*/p' t2.js  > t3.js
  544  sed  -n '/define.*\/.*,/$1/' t2.js  > t3.js
  545  sed  -n '/define.*\/.*,/\1/' t3.js 
  546  sed  -n '/define.*\/.*,/\\1/' t3.js 
  547  sed  -n '/define.*\/.*,/$1/' t3.js 
  548  sed  -n 's/define.*\/.*,/$1/' t3.js 
  549  sed  -n 's/define.*\/.*,/$1/p' t3.js 
  550  sed  's/define.*\/.*,/$1/' t3.js 
  551  sed  's/define.*\/.*,/、1/' t3.js 
  552  sed  's/define.*\/.*,/\1/' t3.js 
  553  sed  's/define(.*\/.*),/\1/' t3.js 
  554  sed  's/define\(.*\/.*\),/\1/' t3.js 
  555  sed  's/.*define\(.*\/.*\),.*/\1/' t3.js 
  556  sed  's/.*define\(.*\/.*\),.*/\1/p' t3.js 
  557  sed  's/.*define\(.*\/.*\),.*/asdf/' t3.js 
  558  sed  's/.*define(.*\/.*),.*/\1/' t3.js 
  559  sed  's/.*define\(.*\/.*\),.*/\1/p' t3.js 
  560  sed  's/.*define\(.*\/.*\).*/\1/p' t3.js 
  561  sed  's/.*\(.*\/.*\).*/\1/p' t3.js 
  562  sed  's/.*define.*\/.*.*/\1/p' t3.js 
  563  sed  's/.*define.*\/.*.*/kjh/p' t3.js 
  564  sed  's/.*define.*\/.*.*/kjh/' t3.js 
  565  sed  's/.*define\(.*\/.*\).*/\1/' t3.js 
  566  sed  's/.*define\(.*\/.*\),/\1/' t3.js 
  567  sed  's/.*define\(.*\/.*\).*/\1/' t3.js 
  568  cat t3.js 
  569  sed  -n '/define.*\/.*/p' t2.js  > t3.js
  570  sed  's/.*define\(.*\/.*\).*/\1/' t3.js 
  571  sed  's/.*define\(.*\/.*\),.*/\1/' t3.js 
  572  sed  's/.*define\(.*\/.*\),/\1/' t3.js 
  573  sed  's/.*define("\(.*\/.*\)",/\1/' t3.js 
  574  sed  's/.*define("\(.*\/.*\)",.*/\1/' t3.js 
  575  sed  's/.*define("\(.*\/.*\)", [.*/\1/' t3.js 
  576  sed  's/.*define("\(.*\/.*\)", \[.*/\1/' t3.js 
  577  sed  's/.*define("\(.*\/.*\)",\[.*/\1/' t3.js 
  578  sed  's/.*define("\(.*\/.*\)[", \[].*/\1/' t3.js 
  579  sed  's/.*define("\(.*\/.*\)[", \[]*.*/\1/' t3.js 
  580* sed  's/.*define("\([a-zA-Z\/].*\).*/\1/' t3.js 
  581  sed  's/.*define("\(.*\/.*\)[", \[]*.*/\1/' t3.js 
  582  sed  's/.*define("\(.*\/.*\)", [.*/\1/' t3.js 
  583  sed  's/.*define("\(.*\/.*\)", \[.*/\1/' t3.js 
  584  sed  's/.*define("\(.*\/.*\)", \[.*/\1/' t3.js  > t4
  585  sed  's/.*define("\(.*\/.*\)", \[.*/\1/' t4
  586  sed  's/.*define("\(.*\/.*\)", .*/\1/' t4
  587  sed  's/.*define("\(.*\/.*\)",.*/\1/' t4
  588  sed  's/.*define("\(.*\/.*\)",.*/\1/' t4 > t5.js
  589  ls
  590  cd ..
  591  ls
  592  cd src
  593  ls
  594  cd lib
  595  ls
  596  sed ../../bin/t5.js 
  597  sed 's/lib/p' ../../bin/t5.js 
  598  sed -n '/lib//p' ../../bin/t5.js 
  599  sed -n '/lib/wget \1/p' ../../bin/t5.js 
  600  sed -n '/\(.*lib.*\)/wget \1/p' ../../bin/t5.js 
  601  sed 's/\(.*lib.*\)/wget \1/p' ../../bin/t5.js 
  602  sed 's/\(.*lib.*\)/wget \1/' ../../bin/t5.js 
  603  sed -n 's/\(.*lib.*\)/wget \1/p' ../../bin/t5.js 
  604  sed -n 's/\(.*lib.*\)/wget \1/p' ../../bin/t5.js 
  605  sed -n 's/\(.*lib.*\)/\1.js/p' ../../bin/t5.js 
  606  sed -n 's/\(.*lib.*\)/\1.js/p' ../../bin/t5.js > downloadlib.shell
  607  chmod +x downloadlib.shell 
  608  ./downloadlib.shell 
  609  ls
  610  sed -n 's/\(.*lib.*\)/\1.js"></script>/p' ../../bin/t5.js
  611  sed -n 's/\(.*lib.*\)/\1.js"><\/script>/p' ../../bin/t5.js
  612  sed -n 's/\(.*lib.*\)/\1.js"><\/script>/p' ../../bin/t5.js > appendJs.txt
  613  sed -n 's/\(.*app.*\)/\1.js"><\/script>/p' ../../bin/t5.js > appendJs.txt
  614  ls
  615  cd ..
  616  ls
  617  cd app
  618  ls
  619  sed -n 's/\(.*app.*\)/\1.js/p' ../../bin/t5.js > downloadlib.shell
  620  cat downloadlib.shell 
  621  cat ../lib/downloadlib.shell 
  622  sed -n 's/\(.*app.*\)/\1.js/p' ../../bin/t5.js > downloadlib.shell
  623  sed -n 's/\(.*app\/[a-Z]\)/\1.js/p' ../../bin/t5.js > downloadlib.shell
  624  sed -n 's/\(.*app\/[a-Z]*\)/\1.js/p' ../../bin/t5.js > downloadlib.shell
  625  sed -n 's/\(.*app\/\d*\)/\1.js/p' ../../bin/t5.js > downloadlib.shell
  626  cat downloadlib.shell 
  627  sed -n 's/\(.*app\/[a-z]*\)/\1.js/p' ../../bin/t5.js > downloadlib.shell
  628  cat doe
  629  cat downloadlib.shell 
  630  sed -n 's/\(.*app\/[a-Z]*\)/\1.js/p' ../../bin/t5.js > downloadlib.shell
  631  sed -n 's/\(.*app\/[a-z|A-Z]*\)/\1.js/p' ../../bin/t5.js > downloadlib.shell
  632  cat downloadlib.shell 
  633  sed -n 's/\(.*app\/[a-z|A-Z]*\)$/\1.js/p' ../../bin/t5.js > downloadlib.shell
  634  cat downloadlib.shell 
  635  sed -n 's/\(.*app\/[a-z|A-Z|\.|_]*\)$/\1.js/p' ../../bin/t5.js > downloadlib.shell
  636  cat downloadlib.shell 

 

分享到:
评论

相关推荐

    AngularJS学习笔记

    ### AngularJS学习笔记知识点解析 #### 一、AngularJS简介 AngularJS是由Google推出的一款JavaScript库,虽然在本文档中作者将其称为“工具”,但实际上它更接近于一个完整的前端开发框架。AngularJS的设计理念...

    angularjs学习笔记

    **AngularJS学习笔记** AngularJS,作为一款强大的前端JavaScript框架,由Google维护,主要用于构建单页应用程序(SPA)。它的核心特性包括数据绑定、依赖注入、模块化和指令系统,极大地简化了网页应用的开发流程...

    JS AngularJS 学习笔记

    **AngularJS 框架详解** AngularJS 是一个强大的JavaScript框架,由Google维护,用于构建动态Web应用。它通过MVC(模型-视图-控制器...通过深入学习和实践,你可以有效地利用AngularJS构建高效、可维护的Web应用程序。

    AngularJs学习笔记

    AngularJs学习笔记中涉及了AngularJs的基本概念和操作流程,其知识点主要包括以下几个方面: 一、AngularJs的基本概念 AngularJs是一种前端的JavaScript框架,主要用于构建单页面应用程序。AngularJs的核心特性包括...

    AngularJs学习笔记.docx

    ### AngularJS 学习笔记 #### 一、AngularJS 概述 AngularJS 是一个用于构建动态Web应用的开源框架,由 Google 维护。它通过扩展 HTML 的功能来简化 Web 开发,并允许开发者以声明式的方式编写代码,极大地提高了...

    angularjs学习笔记本

    这个"angularjs学习笔记本"很可能是包含了关于AngularJS的学习资料、示例代码和教程。AngularJS的核心特性是它使用了MVC(Model-View-Controller)架构模式,提供数据绑定和依赖注入,简化了前端开发。 在AngularJS...

    AngularJs学习笔记1

    【AngularJS学习笔记1】 AngularJS 是一个强大的前端JavaScript框架,用于构建动态Web应用程序。它通过数据绑定和依赖注入简化了HTML页面与JavaScript代码之间的交互。这篇笔记将深入探讨AngularJS的一些基本概念,...

    AngularJS学习笔记.pdf

    ### AngularJS 学习笔记知识点总结 #### 一、AngularJS 概述 AngularJS 是由 Google 开发的一款开源 JavaScript 库,它提供了一种全新的应用程序组织与开发方式。AngularJS 的核心特性之一就是**数据双向绑定**,...

    AngularJS学习笔记 - 进出自由,我的分享1

    【AngularJS学习笔记 - 进出自由,我的分享1】 AngularJS是一款由Google开发的JavaScript框架,用于构建富客户端Web应用程序。它强调数据绑定和依赖注入,简化了前端开发流程,尤其是在实现MVC(模型-视图-控制器)...

    AngularJS 学习笔记.pdf

    总而言之,这份AngularJS的学习笔记为初学者提供了一个由浅入深、涵盖AngularJS基础知识和核心概念的全面指南。通过对这份笔记的学习,初学者可以逐步掌握AngularJS的使用,从而有效地进行前端开发。

    AngularJS 学习笔记

    ### AngularJS 学习笔记 —— Directive 的深入解析 #### 一、Directive 概述 在AngularJS中,**Directive**是一种强大的特性,它能够扩展HTML的行为和功能,让开发者能够在网页上创建自定义的标签和行为。...

    AngularJS 学习笔记(表单验证篇)

    本学习笔记将深入探讨AngularJS中的表单验证机制,主要包括以下几个方面: 1. **AngularJS 表单基础**: AngularJS中的表单是基于HTML的,但通过添加`ng-form`指令,可以将其提升为一个AngularJS感知的表单。表单...

    AngularJS学习笔记——与用户交互的动态清单列表

    在本文中,我们将深入探讨如何使用AngularJS创建一个与用户交互的动态清单列表。AngularJS是一种强大的JavaScript框架,它提供了丰富的功能,使开发者能够轻松构建动态Web应用。在这个实例中,我们将关注以下几个...

    AngularJS学习笔记——通过Ajax获取JSON数据T

    通过Ajax获取JSON数据以我之前写的与用户交互的动态清单列表为例,现在把模型中的数据单独写成一个JSON文件,再通过发起Ajax请求的方式获取JSON数据。这样,清单列表中的数据项就都是通过JSON数据来获取的了。

Global site tag (gtag.js) - Google Analytics