Javascript 无法编辑Ext图表中的自定义文本项

Javascript 无法编辑Ext图表中的自定义文本项,javascript,extjs,charts,Javascript,Extjs,Charts,我有一个用ExtJS制作的图表。这个图表有一些自定义的文本项。我想动态更改这些文本。我希望这些文本组件作为svg的一部分,因为图表的导出图像也应该包含这些自定义文本。 有人知道怎么解决这个问题吗?提前谢谢 更新 当我使用Ext.draw.Sprite而不是Ext.draw.Text时,它起作用了。但图表的导出图像仍然包含旧文本。更新 我认为这是一个bug,因为尽管setText方法显示了一个合理的代码: setText: function(text) { var me = this,

我有一个用ExtJS制作的图表。这个图表有一些自定义的文本项。我想动态更改这些文本。我希望这些文本组件作为svg的一部分,因为图表的导出图像也应该包含这些自定义文本。

有人知道怎么解决这个问题吗?提前谢谢

更新

当我使用
Ext.draw.Sprite
而不是
Ext.draw.Text
时,它起作用了。但图表的导出图像仍然包含旧文本。更新


我认为这是一个bug,因为尽管
setText
方法显示了一个合理的代码:

setText: function(text) {
    var me = this,
        surface,
        sprite;

    if (me.rendered) {
        surface = me.surface;
        sprite = surface.items.items[0];

        me.text = text || '';
        surface.remove(sprite);
        me.textConfig.type = 'text';
        me.textConfig.text = me.text;
        sprite = surface.add(me.textConfig);
        sprite.setAttributes({
            rotate: {
                degrees: me.degrees
            }
        }, true);
        if (me.autoSize || me.viewBox) {
            me.updateLayout();
        }
    } else {
        me.on({
            render: function() {
                me.setText(text);
            },
            single: true
        });
    }
}

问题是文本精灵永远不会被渲染,
me.rendered
保持为false,因此代码永远不会被执行。一个非常麻烦的解决方法是从外部设置渲染标志。

txtDraw.setAttributes({'text':'Jeff'},true)

使用Ext.draw.Sprite的setAttributes方法


参考-

感谢Saki的回复。你的观察是对的。但是我可以通过使用
Ext.draw.Sprite
解决这个问题。但是我仍然无法下载带有更新文本的图表。你能帮我吗?非常感谢Rahul:)
var txtDraw =  Ext.create('Ext.draw.Sprite', {
    type:'text',
    text  : 'Initial Text',
    font  : '24px Arial',
    width : 500,
    height: 100, 
    x:20,
    y:20
});
setText: function(text) {
    var me = this,
        surface,
        sprite;

    if (me.rendered) {
        surface = me.surface;
        sprite = surface.items.items[0];

        me.text = text || '';
        surface.remove(sprite);
        me.textConfig.type = 'text';
        me.textConfig.text = me.text;
        sprite = surface.add(me.textConfig);
        sprite.setAttributes({
            rotate: {
                degrees: me.degrees
            }
        }, true);
        if (me.autoSize || me.viewBox) {
            me.updateLayout();
        }
    } else {
        me.on({
            render: function() {
                me.setText(text);
            },
            single: true
        });
    }
}