今天在项目中发现了一个问题:
1.功能需求
将图表的某一列设置成公共列,或者退回私有列。如果已经是公共列,只出现“设置成私有列”,如果是私有列,只出现“设置成公共列”,两个选项不能同时出现。(注:公共列就是每次建表格式默认出现这个列的所有数据。)
2.问题
我在数据库中建了一个表,用于存储公有列信息。图表的某一列设置成公共列时,写入这一列的数据到表中。
将设置公共列的功能放右击出现的菜单里。每次右击时都会执行一个函数实现此功能,函数中设置变量flag作为标记,flag的值从数据库中查询得到。
我用的是angular1.X,尽管有强大的数据绑定,但是但数据库里的数据变化时,它也无法自动赋值更新flag变量。
这样就出现了一个问题:如果不自动更新,右击时执行函数,那么变量第一次的值仍是上一次的值(因为查询状态是从数据库异步获取然后赋值给变量),第二次的值才会正常
3.解决方案
(1)页面加载时就获取状态并赋值。
这里的值就是从数据库里面得来的,所以一开始就是正常的。这样带来的问题是:即使用户改变了状态,在不刷新页面的情况下,状态仍保持不变(2)在前端设置变量:当用户改变了状态时,在前端改变变量的值,并写回数据库。这样保证了能实时赋值并且数据库保持同步