2015-06-30 12 views
17

Uso le direttive angolari nvd3.Angolare nvd3 Ridimensionamento automatico del grafico a linee

secondo l'exemple: https://github.com/angularjs-nvd3-directives/angularjs-nvd3-directives/blob/master/examples/lineChart.with.automatic.resize.html

<!-- 
width and height are removed from the directive for automatic resizing. 
--> 

Beh, se cambio La dimensione Div del grafico. ridimensiona ma solo quando sposto/apro/chiudi la 'console view' (ctrl + shift + i su FF).

Controllo su direttiva angolare-nvd3, Non c'è alcuna chiamata di evento per il ridimensionamento, quindi suppongo che sia un complemento d3/nvd3?

La mia domanda fino ad ora: come simulare questo tipo di evento per il grafico da ridimensionare?

+0

Potresti inserire il codice che hai in un violino o jsbin? –

risposta

8

Si potrebbe provare a lanciare un altro evento di ridimensionamento che potrebbe ridisegnare il grafico. window.dispatchEvent(new Event('resize'));

Un approccio simile ha funzionato per me con Chart.js. È strano quando la console è visibile cambia la pagina - non capisco ancora come funziona, ma si presenta regolarmente con layout dinamici.

+0

Il mio modo di fare è stato un po 'complicato. Ma io uso la tua linea e funziona bene. C'è un modo in cui ti restituisco la taglia? – ssbb

+0

Felice che abbia funzionato. No, purtroppo le taglie hanno una scadenza. –

+4

Il motivo per cui la visibilità della console cambia la pagina è perché, se sono ancorati, la commutazione degli strumenti per sviluppatori ridimensiona la finestra del browser e invia un evento di ridimensionamento. Stessa cosa se ridimensioni trascinando i bordi della finestra del browser per cambiarne le dimensioni. – esdot

1

Io non sono sicuro che vi aiuterà o no, ma immagino che è possibile aggiornare il grafico in tutta div ridimensionare funziona nel mio caso: -

Ad esempio: -

$('#my_div').bind('resize', function(){ 

      for (var i = 0; i < nv.graphs.length; i++) { 
       nv.graphs[i].update(); 
      } 

}); 
0

Puoi aggiungi un gestore di eventi di ridimensionamento jquery, se non stai utilizzando jquery, puoi allegare il gestore di eventi usando solo angolare.

utilizzando jQuery

$(document).on('resize', function() { 
 

 
    for (var i = 0; i < nv.graphs.length; i++) { 
 
    nv.graphs[i].update(); 
 
    } 
 

 
});

Utilizzando angolare Solo

Here è un esempio mostra come allegare evento fare documento utilizzando angolare.

Problemi correlati