我找不到任何例子来描述使用C3库创建Dojo的过程。
在尝试创建一个小部件之前,我尝试创建一个模块,它成功了。
我是新来的Dojo ..。下面是我尝试用c3创建一个Widget的内容:
require([
"dojo/_base/declare", "dojo/parser", "dojo/dom-construct", "dojo/ready", "dojo/_base/window",
"dijit/_WidgetBase", "d3/d3", "c3/c3"
],function(declare, parser, domConstruct, ready, win, _WidgetBase, d3, c3){
declare("LineChart", [_WidgetBase], {
_options: {
bindTo : '#kpi1_chart',
data : {
columns : [
['data', 23, 50, 22, 41, 10]
]
},
zoom :{
enabled : true
}
},
_chart: undefined,
constructor: function(params, srcNodeRef){
if(params.hasOwnProperty('id'))
this._options.bindTo = "#"+params.id;
else
console.log("widget LineChart : id couldn't be found");
},
buildRendering: function(){
this._chart = c3.generate(this._options);
}
});
ready(function(){
parser.parse();
});
});下面是我如何在HTML中初始化这个小部件
<div id="kpi1_chart" data-dojo-type="LineChart"></div>当我启动页面时,div标签只是空的,我没有发现任何错误,您能帮忙吗?
发布于 2015-06-16 10:03:50
我会回答我的问题:
为了能够在dojo中显示C3图表,您必须在启动()函数中生成图表。
例如,如果您试图在小部件生命周期中的C3启动()之前的另一个函数(如postCreate() )中生成图表,则无法将c3绑定到DOM元素(相同小部件),因为这个元素还不存在。
发布于 2015-06-05 15:03:50
我把申报部分做好了。
问题是,在内部,c3.js只使用"d3“和"c3”作为模块名,因此如果模块名不先于"d3/d3“,则dojo解析器将在路径中查找'main.js‘文件。
因此,为了使用独立模块名,您需要在dojoConfig变量中配置包,如下所示。
packages:[
{
name: "d3",
location: '//cdnjs.cloudflare.com/ajax/libs/d3/3.4.6',
main:"d3"
},
{
name: "c3",
location: '//cdnjs.cloudflare.com/ajax/libs/c3/0.4.10',
main:"c3"
}这里的诀窍是指定主属性。当您指定主属性时,如果模块名中只指定了d3.js,则dojo加载程序将查找"d3"而不是main.js。
我可以让它与declare一起工作,并且调用了c3.generate(),但是无法获得任何图表。我想我错过了一些css文件。我对c3.js知之甚少。
下面是文档的链接,介绍dojo加载器的工作方式。
希望你能从这里走得更远。
https://stackoverflow.com/questions/30664043
复制相似问题