angular 学习笔记

时间:2022-02-20 13:39:59

每天进步一点点,学习笔记

笔记来自  angular权威指南

如果想要屏蔽浏览器对表单的默认验证行为,可以在表单元素上添加 novalidate 标记。

而按钮标签则完全忽略 hr e f 属性,并不会在被点击时有同样的行为。

指令本质上就是AngularJS扩展具有自定义功能的HTML元素
的途径。例如,我们可以创建一个自定义元素,它实现了 <video> 标签的功能并且能在所有浏览
器中工作:

directive() 方法返回的对象中包含了用来定义和配置指令所需的方法和属性。

声明指令本质上是在HTML中通过元素、属性、类或注释来添加功能。

无论有多少种方式可以声明指令, 我们坚持使用属性方式, 因为它有比较好的跨浏览器兼容性:

template: '<a href="{{ myUrl }}">{{ myLinkText }}</a>'
在主HTML文档中,可以给指令添加 myUrl 和 myLinkText 两个属性,这两个参数会成为指令
内部作用域的属性:
<div my-directive
my-url="http://google.com"
my-link-text="Click me to go to Google">
</div>

当使用当前作用域中的属性动态创建URL时,应该用 ng-href 代替 href 。

AngularJS会告诉浏览器在 ng-src 对应的表达式生效之前不要加载图像:

ng-app 和 ng-controller 是特殊的指令,因为它们会修改嵌套在它们内部的指令的作用域。

$rootScope 是作用域链的起始点,任何嵌套在 ng-app 内的指令都会继承它。

ng-controller 接受一个参数 expression ,这个参数是必需的

子 $scope 只是一个JavaScript对象,其中含有从父级 $scope 中通过原型继承得到的方法和属
性,包括应用的 $rootScope 。

$scope 对象的职责是承载DOM中指令所共享的操作和模型。
操作指的是 $scope 上的标准JavaScript方法。
模型指的是 $scope 上保存的包含瞬时状态数据的JavaScript对象。持久化状态的
数据应该保存到服务中,服务的作用是处理模型的持久化。

出于技术和架构方面的原因,绝对不要直接将控制器中的 $scope 赋值为值类型
对象(字符串、布尔值或数字) 。DOM中应该始终通过点操作符 . 来访问数据。
遵守这个规则将使你远离不可预期的麻烦。

如果将模型对象的某个属性设置为字符串, 它会通过引用进行共享, 因此在子 $scope 中修改
属性也会修改父 $scope 中的这个属性。

模板的URL被限制
在与应用文档相同的域和协议下,可以通过白名单或包装成被信任的值来突破限制。

要记住,使用 ng-include 时AngularJS会自动创建一个子作用域

花括号 {{ some expression }} 内的表达式。这些表达式会
被自动注册到 $watch 服务中并更新到 $digest 循环中

指令的生命周期开始于 $compile 方法并结束于 link 方法

当指令 scope 设置为 true 时,会从父作用域继承并创建一个新的作用域对象。