私はこの zingchart に取り組んでいます:
var myConfig = {
type: "line",
plot:{
aspect:"spline"
},
//...... legend, preview...
"scale-x":{
"format":"%v",
"zooming":true,
"label":{
"id": "xlabel",
"text":"X",
"margin-top":100
},
"item":{
"auto-align":true,
"maxChars":10
},
"tick":{
"line-color":"black",
"line-width":"2px",
"size":8
}
},
"scale-y":{
"zooming":true,
"decimals":0,
"label":{
"id": "ylabel",
"text":"Y",
"margin-top":100
}
},
series: [
{ "values": [
[1,10],
[2,20],
[3,50],
[4,60]
]
},
{ "values": [
[1,3],
[2,7],
[3,15],
[4,30],
[5,70],
[3.2,25]
]
}
]
};
グラフを変更してプロットなどを追加しました。ただし、X 軸と Y 軸のラベルを動的に変更しようとするとエラーが発生します。私は JQuery ラッパーを使用しており、Update Objectに従って次のことを行います。
$('#myChart').updateObject({
"type": "label",
"data": {
"id": "xlabel",
"text": "My new label"
}
});
しかし、これはエラーを発生Uncaught TypeError: Cannot read property 'length' of undefined
させます: この部分で (私はそれが最小化されており、あなたが zingchart を開発しない限りあまり意味がないことを知っています):
for (z = 0, b = p.length; z < b; z++) {
の中にcase "updateobject":
オブジェクトの更新を正しく使用しているかどうかはわかりませんが、これはドキュメントからの動作のようです。私が見逃しているかもしれないアイデアはありますか?
編集: このjsfiddleで発生率を再現できませんでしたが、機能させることもできませんでした。
EDIT2:
p
に設定されているこのビットになると思いますundefined
:
case "updateobject":
r = n.BY(e[ZC._[3]]);
if (r && e.data) {
r.G["objects.updates"] = []; //G = "label"
G = e.type || "label"; // e = Object {type: "label", data: Object}
p = r.o[G + "s"]; // p = undefined, r = e {b: undefined, M9: "zcgraph", MW: "linegraph", o: Object, G: Object…}
そしてr.o
、次のとおりです。
o: Object
background-color: "#ffffff"
height: 502
legend: Object
plot: Object
plotarea: Object
preview: Object
scale-x: Object
scale-y: Object
series: Array[2]
tween: null
type: "line"
width: 755
x: 0
y: 0
__proto__: Object
このデモは、動作する例を示していUpdateObject
ます。
var myConfig = {
'type':'line',
'series':[
{
'values':[11,26,7,44,11]
}
],
'labels':[
{
'id':'label1',
'text':'Label 1',
'x':50,
'y':50,
'background-color':'#f90',
'padding':5
},{
'id':'label2',
'text':'Label 2',
'x':150,
'y':50,
'background-color':'#f09',
'padding':5
}
],
'shapes':[
{
'id':'shape1',
'x':100,
'y':100,
以下のオブジェクトlabels
が見つかるようです (そのため、+"s"
inの前に見ましたp = r.o[G + "s"]
)。「scale-x」内のラベルを変更するために間違った方法を使用している可能性があります。