2016-05-09 10 views
0

Also verwende ich Telerik Kendo MVC Wrapper, um ein Balkendiagramm zu rendern.Kendo MVC Chart - Rendereeignisse ausgeben

Wenn das Render-Ereignis ausgelöst wird, gebe ich eine JavaScript-Funktion ein; Ich komme jedoch in eine Endlosschleife, wenn ich versuche, das Diagramm mit der Methode setOptions() zu skalieren.

Zum Beispiel:

onRender: function (e) 
 
    { 
 
     e.preventDefault(); 
 

 
     console.log("Render"); 
 
     var compareChart = $("#chart").data("kendoChart");   
 

 
     var wt = compareChart.element.parent().width(); 
 
     var ht = compareChart.element.parent().parent().height() 
 
     
 
     // **** THIS CAUSES TO TRIGGER onRender INFINITELY **** 
 
     compareChart.setOptions({ chartArea: { height: ht, width: wt } }); 
 

 
     return; 
 
    }
@(Html.Kendo().Chart() 
 
    .Name("chart") 
 
    .ChartArea() 
 
    .series.Bar() 
 
    .Events(events => events 
 
    .Render("onRender")  // *** ON RENDER EVENT *** 
 
)

Ich vermute, dass ich so etwas wie e.preventDefault(); aber nicht sicher, verwenden müssen, wie diese Definition in der Kendo-Wrapper zu setzen:

.Events(events => events 
     .Render("Whatif.onRender")  
) 

Wie kann ich meine benutzerdefinierte onRender js Funktion abbrechen, sobald ich die compareChart.setOptions Kendo mich rufe thod.

Ihr Rat wird geschätzt ...

Dank, Bob

Antwort

1

Sie können Kendo Ereignisse in Javascript entbinden und binden. Zum Beispiel versuchen Sie etwas wie:

compareChart.unbind('render'); 
compareChart.setOptions({ chartArea: { height: ht, width: wt } }); 
compareChart.bind('render', onRender); //Probably need to prefix onRender with the parent object 

Hoffentlich bedeutet dies, dass Ihre Funktion nicht erneut ausgelöst wird, während setOptions läuft. Natürlich muss das Ereignis nicht erneut gebunden werden, wenn Sie es nur einmal ausführen müssen.

Nebenbei stoppt preventDefault() nur alle zugeordneten DOM-Ereignisse von feuern und nicht diejenigen ausgelöst durch Kendo-Code.

+0

Ich werde morgen versuchen. Ich fügte eine globale js Boole'sche Var als Hack hinzu, und es funktionierte; aber nicht ideal. –

Verwandte Themen