当前位置: 代码迷 >> Web前端 >> Twaver树数据和面板数据同步刷新有关问题
  详细解决方案

Twaver树数据和面板数据同步刷新有关问题

热度:67   发布时间:2012-10-26 10:30:59.0
Twaver树数据和面板数据同步刷新问题
Re: Twaver树数据和面板数据同步刷新问题
默认只用设置element.name后,树和拓扑都会自动刷新,不用调用this.network.invalidateElementUI(this.element, false);
用如下代码试试:
代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal"
            xmlns:servasoftware="http://www.servasoftware.com/2009/twaver/flex"
            creationComplete="init();" paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0">
   <mx:Script>
      <![CDATA[
         import demo.*;
        
         import twaver.*;
         import twaver.network.interaction.InteractionEvent;
        
         private var box:ElementBox = new ElementBox();
        
         private function init():void {
            Styles.setStyle(Styles.GROUP_FILL_ALPHA, 0.5);
            initBox();
            tree.dataBox = box;
            network.elementBox = box;
         }
        
         private function initBox():void {
            var layer:Layer = new Layer("GROUP");
            box.layerBox.add(layer);
           
            var from:Node = new Node();
            from.name = "From";
            from.location = new Point(100, 100);
            from.layerID = "GROUP";
            box.add(from);
           
            var to:Node = new Node();
            to.name = "To";
            to.location = new Point(400, 400);
            to.layerID = "GROUP";
            box.add(to);
           
            var link:Link = new Link(from, to);
            link.name = "Link from From to To";
            link.layerID = "GROUP";
            box.add(link);
           
            var group:CGroup = new CGroup();
            group.name = "Group";
            group.addChild(from);
            group.addChild(to);
            group.addChild(link);
            group.expanded = true;
            box.add(group);
           
            var node1:Node = new Node();
            node1.name = "Node1";
            node1.location = new Point(150, 200);
            box.add(node1);
           
            var node2:Node = new Node();
            node2.name = "Node2";
            node2.location = new Point(390, 390);
            box.add(node2);
           
            link = new Link(node1, node2);
            link.name = "Link from Node1 to Node2";
            box.add(link);
         }
        
         private function test():void {
            if(box.selectionModel.lastData != null){
               box.selectionModel.lastData.name='test';
            }
         }
      ]]>
   </mx:Script>
   <mx:VBox width="100%" height="100%">
      <mx:HBox id="toolbar" width="100%" height="30">
         <mx:Button label="Change Name" click="test()"/>
      </mx:HBox>
      <mx:HBox width="100%" height="100%">
         <servasoftware:Tree id="tree" width="300" height="100%"/>
         <servasoftware:Network id="network" width="100%" height="100%"/>
      </mx:HBox>
   </mx:VBox>
</mx:Application>


2011年 4月 21日 16:26

sheva
新手上路

注册: 2011年 3月 15日 10:48
帖子: 20

Re: Twaver树数据和面板数据同步刷新问题
在节点比较少的情况下(20个以内),基本不会出现不实时刷新的问题;一旦节点比较多,出现不实时刷新的概率还是挺大的。
我通过调用Twaver Tree的updateCompareAndVisibility方法,可以规避这个问题。


2011年 4月 21日 17:21

zht
TWaver


注册: 2010年 7月 22日 11:25
帖子: 425

Re: Twaver树数据和面板数据同步刷新问题
数据更新以后view的联动这个应该是不会有什么问题的
能不能把你的环境描述一下,或者发一段测试代码,我们这边测试一下

_________________


Re: Twaver树数据和面板数据同步刷新问题
sheva 写道:
在节点比较少的情况下(20个以内),基本不会出现不实时刷新的问题;一旦节点比较多,出现不实时刷新的概率还是挺大的。
我通过调用Twaver Tree的updateCompareAndVisibility方法,可以规避这个问题。

如果过滤或排序内部逻辑变化,但是没有fire触发事情情况下才需要调用updateCompareAndVisibility,可以发发tree上设置compare,visible或者labelFunction之类的函数代码,并查查里面函数逻辑依赖的图元属性是否变化了没fire的情况

flex没有线程之说,全部是当线程的,不会有概率的情况,应该是可以查处或写出一定复现的场景