发表于: 2017-07-13 23:35:37

1 823


今天完成的事情:

修改分页内存溢出的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操作恰恰又是隐藏的性能瓶颈所在。



返回列表 返回列表
评论

    分享到