⭐️ 本文首发自 前端修罗场(点击即可加入),一个专注 Web 技术、答疑解惑、面试辅导、职业发展的社区。现在加入,即可参与打卡挑战,和一群人一起努力。挑战成功即可获取一次免费的模拟面试机会,进而评估知识点的掌握程度,获得更全面的学习指导意见,不走弯路,不吃亏!


上一篇中,我们介绍ng的数据绑定的方法,不知道你是否能给吸收。想了一下,为了在 ng 入门之前能够帮助大家打好基础,所以在这篇中我就用一个例子来解析 ng,并归纳一下 ng 的知识点。

案例解析

<html ng-app>
<!-- ng-app 告诉angular 应该管理页面的那部分,在html中声明就是管理整个html页面 -->
<head><title></title>
</head>
<!-- 用控制器管理body标签之间的任何东西 -->
<body ng-controller='CartController'><h1>订单:</h1><!-- ng-repeat为items数组中每个元素拷贝一个这个div中的DOM,在div每次拷贝中,同时设置一个叫item的属性代表当前元素 --><div ng-repeat='item in items'><!--将当前项的title属性插入到DOM中 --><span>{{item.title}}</span><!-- 定义创建了输入字段和item.quantity之间的数据绑定 --><input ng-model='item.quantity' /><!-- currency是ng的一种过滤器 --><span>{{item.price|currency}}</span><span>{{item.price*item.quantity|currency}}</span><!-- ng-click点击调用remove()函数,并传递$index --><button ng-click="remove($index)">删除</button></div><script type="text/javascript" src="js/angular.js"></script><script type="text/javascript">//管理逻辑// $scope对象:用来把数据绑定到界面上的元素function CartController($scope){$scope.items=[{//定义一个items集合title:'水笔',quantity:8,price:3.95},{title:'毛笔',quantity:10,price:12.95}];//定义remove函数,将remove加到$scope中$scope.remove=function(index){$scope.items.splice(index,1);};}</script>
</body>
</html>

希望在对这个例子进行了完整的注解之后,你能更清晰的理解ng的思路,并且希望您能亲自实践一下!实践是检验真理的唯一标准嘛~


知识点归纳

1.MVC
ng是基于MVC的js库,首先你要了解一下JS在MVC上的解析。

M:模型,包含应用当前状态的数据;
V:视图,显示模型中的数据;
C:控制器,管理模型与视图的关系。

用一张图来解释:

现在是否对javascript的MVC模式有更清晰的认识呢。

OK,我们接下来将ng.

2.angularjs知识点

首先,你要使用ng来创建一个web应用,你必须做2件事:

(1)加载angularjs;(通常我们可以使用CDN加载angularjs,因为CDN是一种“脚本跨应用缓存”,即当用户有多个使用angularjs的应用时,ng只下载一次,不会再次加载CDN。)

(2)使用ng-app告知angular管理那一部分的DOM;

注释:如果在现有的一个应用中,希望使某部分用angularjs来管理,就在该部分的元素上加上ng-app,如<div ng-app></div>

其次,在我们在$scope中创建数据的时候,应该使用“模型对象”的方式来包含数据,这样能避免在$scope对象中原型继承引起非预期的行为。

如:

var messages={};//定义一个messages对象messages.someText="hello world";//为messages的属性someText赋值function myController($scope){$scope.messages=messages;}

这样,我们就像数据包含在模型对象messages中啦~。

3、angular知识点——ng应用启动流程

angular应用的标准启动流程分为下列几步:

  1. 用户请求应用的第一个页面;
  2. 用户的浏览器发出一个HTTP链接到服务器,加载包含模板的index.html页面;
  3. angualr加载到页面,等待页面完全加载完成,然后寻找ng-app定义模板的边界;
  4. angular经过模板寻找标识符和捆绑,监听器和DOM操作完成了注册。同时,从服务器查询初始化数据,应用启动完成。
  5. 连接到服务器按需加载你额外需要展示给用户的数据。

如此下来,用angular结构化应用,将应用程序的模板和填充它们的数据分离啦爽吧~
这样一来,模板可缓存,在第一次加载后只有新数据加载到浏览器,提升了浏览器的性能。

4、angular常用指令

ng-bind、ng-model、ng-show/hide 、ng-if

ng-checked、ng-src、ng-href、 ng-class

ng-selected、ng-submit 、ng-change、 ng-disabled

这些常用指令一定要熟悉它们的用法,在实际工作中很常用到。关于指令的作用可以参考一下这篇文章:http://www.jb51.net/article/60733.htm


OK,关于ng入门的实践和知识点的归纳就到这里,如果还有哪些需要了解的欢迎留言~

每篇一语:

《致命魔术》中说过,“魔术三步骤——以虚代实、偷天换日、化腐朽为神奇”,波登在影片最后告诉安杰,对艺术的牺牲才是他的secret,这也诠释了魔术的最后一步骤。所以,当你想达到一个位置的时候,助你上去的是你付出的极大的代价。安杰只做到了前两部,而波登做到了,这就是波登最终活下来的原因吧。

【笔记】AngularJs学习笔记[02]【实践回顾与知识点归纳】相关推荐

  1. 【AngularJs学习笔记五】AngularJS从构建项目开始

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

  2. 【AngularJs学习笔记三】Grunt任务管理器

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

  3. 《算法笔记》学习笔记(1)

    <算法笔记>学习笔记(1) 2021/4/7号 晚上21:36开始学习 第二章 c++/c快速入门 有的时候不要在一个程序中同时使用cout 和 printf 有的时候会出现问题. 头文件 ...

  4. TED阅读笔记,学习笔记

    TED阅读笔记,学习笔记,大约200集 每日一读,一起来学英语吧 自用,喜欢的帮忙点个赞

  5. AngularJs学习笔记--unit-testing

    原版地址:http://docs.angularjs.org/guide/dev_guide.unit-testing javascript是一门动态类型语言,这给她带来了很强的表现能力,但同时也使编 ...

  6. c语言for循环笔记,【学习笔记】【C语言】循环结构-for

    1.使用: for (语句1; 条件; 语句2) { 循环体 } 语句1:初始化语句 语句2:增量语句(执行完循环体后再执行的语句) 1.for一开始就会执行一次语句1(整个for循环只会执行一次) ...

  7. 学习笔记 mysql_MySQL 学习笔记

    MySQL 学习笔记 1 定义 数据库中的表:一行叫一条记录.每一列叫一个属性,或一个字段. 主键:表中的某个特殊字段,具有唯一的确定的值,可以根据该字段唯一的确定一条记录 外键:表中的某个字段的值为 ...

  8. [读书笔记]C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  9. php基础教学笔记,php学习笔记:基础知识

    php学习笔记:基础知识 2.每行结尾不允许有多余的空格 3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的 4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其 ...

最新文章

  1. 使用NLTK进行英文分词
  2. 表格元素的快捷获取以及隔行变色、鼠标移入变色案例
  3. 如何做好一条0~2岁的产品狗
  4. Python 统计一行字符中单词的个数_Python 经典练习题-015
  5. AAAI 2021 《Regularizing Attention Networks for Anomaly Detection in Visual Question Answering》论文笔记
  6. Python 实例属性和类属性
  7. 你真的懂 timeout 吗?
  8. java after 函数_Java中关于Date的before函数和after函数的使用
  9. java json 修改字段_JSON文件-Java:编辑/更新字段值
  10. 带着canvas去流浪系列之四 绘制散点图
  11. JAVA中常用接口的介绍及使用示例 java lang Comparable
  12. 程序员,别再无脑刷题了,这样学 Python,编程能力暴增!
  13. jquery系列教程3-DOM操作全解
  14. ubuntu php oracle,Oracle数据库之php在ubuntu上安装oracle的扩展
  15. ubuntu完全卸载mysql
  16. illustrator插件-拼版功能开发-印前角线-js脚本开发-ai插件
  17. 如何通过芯片手册寻找操作GPIO
  18. 2020第三届中青杯问题总结
  19. TI DSP处理器中CMD 文件的那些事儿
  20. 靠!我被项目经理和同事嘲笑了,因为不会远程debug调试...

热门文章

  1. 制作initrd镜像文件
  2. 周期字符串的最小周期
  3. python中df是什么_python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]...
  4. 使用EasyExce对excel进行读取
  5. RGB颜色值与十六进制颜色码互相转换代码
  6. 更新日志 150930 - 视频时代
  7. 抓取网易公开课并下载
  8. OpenFace学习(1):安装配置及人脸比对
  9. 一、用XAMPP搭建本地PHP服务器,运行php文件
  10. 支付宝支付返回错误码4000