所以我使用Telerik的Kendo MVC包装器来渲染条形图。
当触发Render事件时,我输入一个JavaScript函数;但是,当我尝试使用setOptions()
方法调整图表大小时,我会陷入无限循环。
例如:
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 ***
)
我怀疑我必须使用像e.preventDefault();
这样的东西,但不知道如何在剑道包装器定义中设置它:
.Events(events => events
.Render("Whatif.onRender")
)
一旦我调用onRender
Kendo方法,如何取消自定义compareChart.setOptions
js功能。
感谢您的建议......
感谢, 鲍勃
答案 0 :(得分:1)
您可以在javascript中取消绑定并绑定kendo事件。例如尝试类似:
compareChart.unbind('render');
compareChart.setOptions({ chartArea: { height: ht, width: wt } });
compareChart.bind('render', onRender); //Probably need to prefix onRender with the parent object
希望这意味着在setOptions运行时你的函数不会再次触发。当然,如果您只需要运行一次,则无需再次绑定事件。
另外,preventDefault()只会阻止任何关联的DOM事件触发,而不会阻止由剑道代码触发的事件。