##页面优化的小思考
今天遇到一个页面问题,QA反馈的页面bug
问题是这样的:angular
用ng-repeat
出一个一级表格,表格每行都有一个repeat出来的下拉dropmenu
一开始没多想,觉得后端接口都是一起返回给我的木有分页,肯定数据并木有那么多
结果分类一多,页面是异步加载的并不会有啥问题,下拉框就卡住了,如下图
仔细思考了下觉得是页面一次生成的dom太多,是n平方级别的复杂度
最初思考的解决方案:
每次点击再请求list接口生成一个dropmenu,和table分开请求
但是这会带来往下操作的时候dom越来越多越来越卡,pass
===
思考的解决方案如下
####复用同一个dropmenu
因为dropmennu里的分类都是一样的,所以要复用,让一个页面只生成一次dropmenu,复杂度就变成n+1
如何在页面实现呢?
###先将输入框提出来
由于输入框的值是绑定controller
和view
里的ng-model
的,所以是独立处理的,但是显示的dropmenu可以拿出来做一个独立的组件
###之后监听点击事件,把这个早已待机的dropmenu显示在对应的输入框下待选
最关键的是这步完全可以用css实现,非常节省js操作。
具体代码涉及项目代码,就不放出来了