https://www.cnblogs.com/lovesong/p/4870006.html
AngularJS是一个框架,框架决定整个项目的开发套路,以框架为主导。
jQuery是一个函数库,以项目本身为主导。
angularjs是个双向绑定的前端JS框架,其他特性都是围绕它工作的。
它适用于CRUD应用(增加(create)、读取(retrieve)、更新(update)和删除(delete))
双向绑定:
(当模板编译视图,视图发生变化触发数据模型变化,数据模型又会作用于视图。)
angularjs元件:其中controller、directive是最为重要的
module:
作为模块组织者,包含其他angularJS元件
controller:
负责跟view沟通,不处理任何跟DOM有关的工作
PS:当你的controller里面写了DOM操作时,就应该反省代码是否写得有问题了。
directive:
类似于HTML标签,可以定义标签的行为,所有与DOM相关的操作都应该写在这里。
PS:尽量不要DOM操作,但可能还是会需要用到,用到时就要在directive里用。
service:
写可以独立运作的代码(与view无关),共用于元件(例如控制器)之间,不应该处理任何跟DOM有关的工作。后台数据的请求接口
filter:
对数据做一些修理,不应该处理任何跟DOM有关的工作
config:
用来定义路由规则,不应该处理任何跟DOM有关的工作
双向数据绑定:
双向数据绑定是个重要的特性,当view中有数据发生了变化,这个变化会反馈到Model的scope的数据上,而当scope数据发生变化时,view中的数据也会更新到最新的值。
三个方法:
scope重要的方法:$apply,$digest,$watch
1$watch
注册一个watcher,监听scope的数据,当数据变化时候调用回调函数。第一个参数是被监听的数据,第二个参数是回调函数。
2$digest
检查scope中的数据是否发生变化,如果变化则关联到该watcher的回调函数就会被执行。
3$apply
这方法是调用$rootScope.$digest(),在$rootScope开始$digest,随后会访问到所有的children scope中的watchers。$apply()方法有两种形式。第一种会接受一个function作为参数,执行该function并且触发一轮$digest循环。第二种会不接受任何参数,只是触发一轮$digest循环。
PS:angularjs并不直接调用$digest(),而是调用$scope.$apply()
未完待续……………………