angularjs 总结

来源:互联网 发布:淘宝对新店的扶持政策 编辑:程序博客网 时间:2024/06/03 16:03

    摸了三个月的angularjs,觉得有必要总结下它的一些关键点,有人说拿他试试水会发现它的强大,深入学习会遇到一些问题,可能是在加载优化方面的问题吧,毕竟一个项目庞大起来,所有的内容寄托于一个模块,所有的控制器都会被先加载,故有使用require.js来按需加载。个人认为数据交互、路由和http是我比较关心的内容.

  数据的交互,在表单上表现的尤为明显,表单的验证也是我喜欢的,可以省了很多事,期初我还没发现这个好处,因为一些数据难以分出来出现在表单上面,我通过js 获取在赋给表单,所以抛弃了angularjs的表单,它对与数据改变,是有它自己的监听机制:

   它的内置的事件指令会默认引起$apply调用$digest,如果不是它自身的,不会引起$apply,故一些事件需要$apply来启动它的检查,比如settimeout ,上图就是为什么页面数据改动,控制器里的数据就会变化,每个视图的数据都安排了个watcher.这就是关键的地方。

 对于路由本来是很简单的事情,先把所有的路由配置好,就可以了,路由传参数,在控制器里接收就是了,但是它是单视图的,不能发展子视图,故有了ui-route.js帮助我们布局多个插入入点,我的处理是,页面里延生页面,就把它抛出,定义到外面跟它的父亲视图一个等级,在插入到ng-view里,也是看别人写的,也用这种方式,只要路由定在外面,就跟其他页面一样的展现,相比angular2,它的路由就逊色了,ng2多了个路由守卫,这样就可以处理很多权限的问题了。目前我还没遇到1.x这方面的文章,可能接触的少吧。

对于http,主要说的是数据的保存,这也是我一直困扰的,因为异步的加载,并不能保证数据得到,这样就不能全局去使用数据了,$q服务的使用可以保证异步的执行,我也尝试的写了下,发现按刷新就没数据了,可能我研究不够吧,在服务里保存,在全局作用域里保存,都会出现这个问题。

我还发现了一个好东西http的拦截器 可以实现登入权限的验证:

通过实现 request 方法拦截请求: 该方法会在 $http 发送请求道后台之前执行,因此你可以修改配置或做其他的操作。该方法接收请求配置对象(request configuration object)作为参数,然后必须返回配置对象或者 promise 。如果返回无效的配置对象或者 promise 则会被拒绝,导致 $http 调用失败。
通过实现 response 方法拦截响应: 该方法会在 $http 接收到从后台过来的响应之后执行,因此你可以修改响应或做其他操作。该方法接收响应对象(response object)作为参数,然后必须返回响应对象或者 promise。响应对象包括了请求配置(request configuration),头(headers),状态(status)和从后台过来的数据(data)。如果返回无效的响应对象或者 promise 会被拒绝,导致 $http 调用失败。
通过实现 requestError 方法拦截请求异常: 有时候一个请求发送失败或者被拦截器拒绝了。请求异常拦截器会俘获那些被上一个请求拦截器中断的请求。它可以用来恢复请求或者有时可以用来撤销请求之前所做的配置,比如说关闭进度条,激活按钮和输入框什么之类的。
通过实现 responseError 方法拦截响应异常: 有时候我们后台调用失败了。也有可能它被一个请求拦截器拒绝了,或者被上一个响应拦截器中断了。在这种情况下,响应异常拦截器可以帮助我们恢复后台调用。

关键还是讲下,数据的继承吧,父到子,子到父,全局作用域,

一:单例服务

service factory 等

二:广播与事件、消息机制

$broadcast() ,$emit,$on()

三:子直接获取父的数据

四:watch

这个好,也是上面说的可以监控数据,在实现分页是不错的,可以全局监控。