我正在使用KendoUI for HTML5的项目。我注意到图表小部件中的一个错误,其中setOptions()一直不工作。这里是重新创建错误的片段。Kendo UI中的Chart.setOptions()错误
基本上,上面的代码片段用一些随机数据创建图表。我还有一个复选框,用户可以在图表上启用/禁用缩放和平移。最初创建的图表没有可缩放/平移集合。
看看操作:
<!DOCTYPE html>
<html>
<head>
<base href="https://demos.telerik.com/kendo-ui/bar-charts/pan-and-zoom">
<style>
html {
font-size: 14px;
font-family: Arial, Helvetica, sans-serif;
}
</style>
<title></title>
<link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.2.607/styles/kendo.common-material.min.css" />
<link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.2.607/styles/kendo.material.min.css" />
<link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.2.607/styles/kendo.default.mobile.min.css" />
<script src="//kendo.cdn.telerik.com/2016.2.607/js/jquery.min.js"></script>
<script src="//kendo.cdn.telerik.com/2016.2.607/js/kendo.all.min.js"></script>
</head>
<body>
<div id="example">
<div class="box wide">
<input type="checkbox" id="eq1" class="k-checkbox">
<label class="k-checkbox-label" for="eq1">Enable Zoom</label>
<p id="para">Use SHIFT + Mouse Drag Region Selection combination on mouse-enabled devices to zoom in data for a specific period of time</p>
</div>
<div class="demo-section k-content wide">
<div id="chart"></div>
<div id="log" style="
height: 120px;
overflow: scroll;
padding: 20px;
border: 1px solid black;">
</div>
</div>
<script>
// Sample data
var data = [];
for (var i = 0; i < 50; i++) {
var val = Math.round(Math.random() * 10);
data.push({
category: "C" + i,
value: val
});
}
function createChart() {
$("#chart").kendoChart({
renderAs: "canvas",
dataSource: {
data: data
},
categoryAxis: {
min: 0,
max: 10,
labels: {
rotation: "auto"
}
},
series: [{
type: "column",
field: "value",
categoryField: "category"
}]
});
}
$(document).ready(createChart);
$("#example").bind("kendo:skinChange", createChart);
$("#eq1").click(function(e) {
if (this.checked) {
setZoom({
pannable: {
lock: "y"
},
zoomable: {
mousewheel: {
lock: "y"
},
selection: {
lock: "y"
}
}
});
} else {
setZoom({
pannable: false,
zoomable: false
});
}
});
function setZoom(obj) {
try {
$("#chart").data("kendoChart").setOptions(obj);
} catch (ex) {
$('#log').append($('<div/>').text("Error : " + ex.message + "\n" + ex.stack + "\n"));
}
}
</script>
</div>
</body>
</html>
在用户与复选框(左上角),可缩放的和图表的可平移属性相互作用被设定使用chart.setOptions()中可利用的方法该框架。如果“运行代码段”不起作用,请按照以下步骤操作,您可以看到该错误正在执行中。
第1步:将上面的代码复制到编辑器中http://dojo.telerik.com/ 第2步:运行代码。 (A图表得到作为结果创建)
步骤3:勾选复选框以启用图表变焦。 (可缩放和可平移的属性上设定x轴,使得图表,现在可以缩放和可平移)
步骤4:取消选中的复选框来禁用图表变焦。 (可平移被禁用,但图表仍可以缩放 - 这是错误。)
第5步:再次勾选复选框,你会看到其中的图表显示下了错误。
如果有人知道如何解决这个问题。如果这是KendoUI的错误,那么希望Kendo开发团队得到这个。
感谢格伦,这是可能的解决方法。但它只适用于仅锁定x轴或仅锁定y轴的情况。现在我有一个问题,我希望x轴和y轴都被放大和平移!这就是我想要使用图表小部件中可用的setOptions()方法的原因。我只想给用户一个灵活性,以便用户可以做到以下几点:a)缩放x轴,b)缩放y轴c)缩放x和y轴,d)禁用x和y轴上的缩放。 我该如何做到这一点? – Vinnie
看来我们得到的错误是由于将pannable或zoomable设置为false,因此当您想禁用平移/缩放时,请保留我的“黑客”以防止默认操作我可以更改图表的选项,如: theChart.options.pannable.lock =“x”; 我会发布一个工作代码片段作为答案。 –
这很棒,完美的作品。非常感谢你。:) – Vinnie