1

我正在处理这个 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 包装器,并根据我的更新对象

$('#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中的发生率,但我也无法使其工作。

编辑2:

我认为涉及到这一点,它设置pundefined

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会找到下面的对象(这就是我在 a +"s"in之前看到的原因p = r.o[G + "s"])。这可能意味着我使用错误的方法来修改“scale-x”内的标签。

4

1 回答 1

1
$("#myChart").modify({
    "data": {
         "scale-x":{
            "label":{
                "id": "xlabel",
                "text":"My new label",
            }
        }
    }
});  
于 2016-02-19T14:52:34.877 回答