今天完成的事情:看了angularjs权威指南的前几章,跟着敲代码,感觉这本书挺不错的,挺适合我们这种新手入门看。
明天计划完成的事情:继续看angularjs权威指南,学习自定义指令相关的知识。
遇到的问题:书中关于$render $setViewValue $parsers $formatters 这几个对象不太明白,之后也查了资料,但还是不太会用。
收获:
1.
$scope对象的职责是承载DOM中指令所共享的操作和模型
操作指的是$scope上的标准JS方法;
模型指的是$scope上保存的包含瞬时状态数据的JS的JS对象。持久化状态的数据应该保存到服务中, 服务的作用是处理模型的持久化;
出于技术和架构方面的原因,绝对不要直接将控制器中的$scope赋值为值类型对象。DOM中应该始终通过点操作符.来访问数据;
控制器应该尽可能简单;
2.
对于字符串、数字和布尔型变量,是值复制;而数组、对象和函数则是引用复制
比如当子作用域和父作用域有相同的变量,这个变量是字符串、数字或者布尔型,那么
父子作用域只有继承关系没有双向绑定关系;而如果是数组、对象或者函数的话,就是
双向绑定的,相当于一个指针。
这个特性是所有会创建子作用域的指令共有的,比如ng-chontroller ng-include ng-switch ng-repeat ng-view ng-if;
如果一个DOM元素同时有ng-controller和ng-include,那么作用域都是ng-controller的
ng-include不会自己创建一个外部作用域继承和一个新的子作用域
3.
在angular中,<form>标签被从底层扩展了一系列高级功能,包括表单验证等。原生HTML表单并不会提供这些功能。
4.
默认情况下,如
scope:{
someProperty:'@'
}
定义了指令中的属性名是some-property,但是如果想自己取名

scope:{
someProperty:'@someAttr'
}
那属性名就变成了some-attr;
其中属性值就被赋给了scope信作用域里面的someProperty值
评论