level 1
我先说说我的树图需求,我的树图需要每30秒刷新一次,即30秒和数据库交互一次,如果某一子节点的名称变化了,那我要将此节点名字刷新为最新,但是屏幕不能有闪烁的现象出现,或者有新子节点出现,也要及时刷新,添加到父节点,同样屏幕不能闪烁,我现在的问题是,异步刷新后的结果,要不就是数据不更新,要不就是追加到此节点,要不就是屏幕闪烁,请作者帮我解答,不胜感激,比较急,谢谢
2013年02月03日 06点02分
1
level 11
如果不想有 闪烁,建议 自己每30秒 用ajax 获取数据,然后逐个节点修改name ,之后使用 updateNode 更新视图即可
2013年02月04日 07点02分
2
我也想到这个方法,但是怎么遍历每个节点?我用过getNodes(),也用过transformToArray(),都没成功,麻烦你指点一下如何遍历,或者上两方法如何使用,或者使用中需要特别处理的地方,我看看是不是我用的有问题
2013年02月05日 02点02分
level 11
回复 敏_happy : 可以根据你自己的id 之类的值利用 getNodeByParam 查找,也可以做两个map 对应的看,哪个有哪个没有。。。遍历的方法很多呀。
要知道 getNodes得到的数据对象和你ajax 得到的对象是不一样的,但是一些标志性的数据应该是一样的。
而且, 你都用了 transformToArray 了,直接 for 循环不就可以遍历了吗?
2013年02月06日 09点02分
3
这个工作量比较大,我树图上不止是名称,有十多项信息,你的意思,如果我取出来100条数据,然后我遍历这100条中的没每项信息?这会不会效率很低,有没有其它办法?
2013年03月19日 09点03分
level 11
其实这里面就有算法问题了, 如果你把每条数据都用 getNodeByParam 去搜索就肯定会是最低的效率了。
如果你把树上已有的数据按照 id 生成一个 map; 然后循环新的到的数据,利用id 可以快速在map 中找到树上的节点数据,比对name 是否相同。。。如果你有100个节点,那么也就是循环2次搞定。
2013年03月19日 10点03分
4