2017-01-18 12 views
1

CHANGEイベントが発生したときにいくつかのスタイルを変更したいだけです。しかし、頂点やエッジを挿入または移動してモデルを変更すると、スタイルは変更されませんでした。変更された頂点は、何かをもう一度変更すると、そのスタイルが変更されます。だれかがなぜか分からないのですか?mxEvent.CHANGEイベントのスタイルを最初に変更できないのはなぜですか?

graph.getModel().addListener(mxEvent.CHANGE, function(sender, evt){ 
     if(graphInited){ 
      graph.getModel().beginUpdate(); 
      try { 
        var changes = evt.getProperty('edit').changes; 
        for (var i = 0; i < changes.length; i++) { 
         var change = changes[i]; 
         var state = graph.view.getState(change.cell); 
         if(state!=null){//color #1C86EE means new insert 
          if(state.style[mxConstants.STYLE_IMAGE_BACKGROUND]!="#1C86EE" 
          && state.style[mxConstants.STYLE_STROKECOLOR]!="#1C86EE" 
          && state.style[mxConstants.STYLE_FONTCOLOR]!="#1C86EE"){ 
           graph.setCellStyles(mxConstants.STYLE_IMAGE_BACKGROUND, '#68228B', [change.cell]); 
           graph.setCellStyles(mxConstants.STYLE_STROKECOLOR, '#68228B', [change.cell]); 
          } 
         } 
        } 
      } finally { 
       graph.getModel().endUpdate(); 
      } 
     } 
    }); 

答えて

1

は私が私の最初の答えよりも多くの偵察や好き簡単な解決策を作った:

は、ここに私のコードです。

graph.getModel().addListener(mxEvent.CHANGE, function(sender, evt){ 
    if(graphInited){ 
     graph.getModel().beginUpdate(); 
     evt.consume(); 
     try { 
       var changes = evt.getProperty('edit').changes; 
       for (var i = 0; i < changes.length; i++) { 
        var change = changes[i]; 
        var state = graph.view.getState(change.cell); 
        if(state!=null){//color #1C86EE means new insert 
         if(state.style[mxConstants.STYLE_IMAGE_BACKGROUND]!="#1C86EE" 
         && state.style[mxConstants.STYLE_STROKECOLOR]!="#1C86EE" 
         && state.style[mxConstants.STYLE_FONTCOLOR]!="#1C86EE"){ 
          graph.setCellStyles(mxConstants.STYLE_IMAGE_BACKGROUND, '#68228B', [change.cell]); 
          graph.setCellStyles(mxConstants.STYLE_STROKECOLOR, '#68228B', [change.cell]); 
         } 
        } 
       } 
     } finally { 
      graph.getModel().endUpdate(); 
      graph.refresh(); 
     } 
    } 
}); 

  1. evt.consume()
  2. graph.refresh()

だから、最終的なコードは、希望のようになります。

あなたが追加する必要があります

関連する問題