无法编辑Ext图表中的自定义文本项
Unable to edit custom text items in Ext charts
我有一张用Ext-js制作的图表。图表中有一些自定义文本项。我想动态地更改这些文本。我想要这些文本组件作为svg的一部分,因为图表的导出图像也应该包含这些自定义文本。JSFiddle
Ext.onReady(function() {
Ext.define("PopulationPoint", {
extend: "Ext.data.Model",
fields: [ "state", "population" ]
});
var a = Ext.create("Ext.draw.Text", {
type: "text",
text: "Initial Text",
font: "24px Arial",
width: 500,
height: 100,
x: 20,
y: 20
});
var b = Ext.create("Ext.data.Store", {
model: "PopulationPoint",
data: [ {
state: "Alabama",
population: 4802740
}, {
state: "Alaska",
population: 722718
}, {
state: "Arizona",
population: 6482505
}, {
state: "Arkansas",
population: 2937979
}, {
state: "California",
population: 37691912
}, {
state: "Colorado",
population: 5116796
}, {
state: "Connecticut",
population: 3580709
}, {
state: "Delaware",
population: 907135
}, {
state: "DC",
population: 617996
} ]
});
Ext.create("Ext.chart.Chart", {
renderTo: Ext.getBody(),
width: 470,
height: 400,
store: b,
items: [ a ],
series: [ {
type: "pie",
field: "population",
label: {
field: "state",
display: "outside",
font: "12px Arial"
}
} ]
});
setInterval(function() {
a.setText("NewText"); // This statement has no use
}, 3e3);
});
有人知道怎么解决这个问题吗?提前谢谢。
更新
当我使用Ext.draw.Sprite
而不是Ext.draw.Text
时,它就起作用了。但图表的导出图像仍然包含旧文本。更新Jsfidle
var txtDraw = Ext.create('Ext.draw.Sprite', {
type:'text',
text : 'Initial Text',
font : '24px Arial',
width : 500,
height: 100,
x:20,
y:20
});
txtDraw.setAttributes({ 'text':'Jeff'},true )
使用Ext.draw.Sprite 的setAttributes方法
参考-http://docs.sencha.com/extjs/4.1.3/#/api/Ext.draw.Sprite-method-setAttributes
我认为这是一个错误,因为尽管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,因此代码永远不会被执行。一个非常糟糕的解决方法是从外部设置渲染标志。
相关文章:
- 防止自定义文本出现在页面上的所有高图表上,←使用 {events:{load:function(){var.
- Highcharts自定义文本从右向左导出
- 谷歌可视化树图-如何创建自定义文本
- 动态自定义文本堆栈标签Highcharts
- 无法编辑Ext图表中的自定义文本项
- 使用喜欢按钮在Facebook上传输自定义文本
- 如何在 sugarcrm 中的自定义下拉字段中更改值时填充自定义文本区域
- 使用 JS 或 jQuery 解析自定义文本标记
- 需要有关自定义文本区域最大长度功能的建议
- 在 JS 中随机生成带有 url 的自定义文本
- 我每隔几个小时使用 JavaScript 的自定义文本不起作用
- 使用Shopify代码操作自定义文本框时出现问题
- 使用javascript和jquery向inpt字段添加自定义文本
- 使用fabric.js和HTML5在图像画布上编写自定义文本
- 所有id以自定义文本开头的按钮上的JQuery单击事件
- Javascript:确认确定取消按钮上的自定义文本
- 在剑道装载指示器上显示自定义文本
- jQuery日期选择器中的自定义文本
- 关注引导浮动模态表单上自定义文本之后的文本区域
- 在任务栏浏览器选项卡上显示自定义文本