发表于: 2017-07-13 23:35:37
1 821
今天完成的事情:
修改分页内存溢出的bug
给师兄demo,查找项目的问题
修改demo时存在的问题,如图片存储成功后需要跳回列表页,无列表项时需要提示,侧边栏展开状态需要在刷新后依然存在,删除不必要的提示等。
明天计划的事情:
解决项目中剩下的问题,再次demo。
遇到的问题:
在自定义指令中无法获取页面刷新后的$stateParames的新值,导致分页一直出问题,只能先把分页写在$http的callback函数中了。
收获:
angular脏检查
过程:
1.标记dirty = false
2.遍历所有通过component.$watch绑定的数据观察者watcher,对比当前值watcher.get(component)与老值watcher.last
如果值发生改变,运行绑定的监听器 - watcher.fn(newvalue, oldvalue),并导致__dirty__=true。设置watcher.last=newvalue`
3.进入下一个watcher的检查
4.遍历检查一轮后,如果dirty===true,我们重新进入步骤1. 否则进入步骤4.
5.完成脏检查
触发条件:
1.触发UI事件,
2.ajax请求,
3.timeout 延迟,
与VUE的GET/SET模式相比的优缺点:
1.脏检查完全不关心你改变数据的方式,而常规的set, get的方式则会强加许多限制
2.脏检查可以实现批处理完数据之后,再去统一更新view.
3.脏检查其实比 GET/SET 更容易实现。脏检查是个单向的检查流程(请不要和双向绑定发生混淆),可以实现_任意复杂度的表达式支持。而get/set的方式则需
要处理复杂依赖链,基本上表达式支持都是阉割的(使用时就像踩雷).
4.脏检查是低效的,它的效率基本上取决于你绑定的观察者数量,但在这种类mvvm系统中,他又是高效的。因为监听模式带来了dom的局部更新,而dom操作恰恰又是隐藏的性能瓶颈所在。
评论