我找不到任何使用C3庫描述創建Dojo Widget的示例。如何使用C3創建Dojo Widget
在試圖創建一個小部件之前,我試着創建一個模塊,它工作。
我是新使用Dojo ...所以這裏是我試圖創建一個Widget與C3:
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標籤只是空的,我沒有得到任何錯誤,你能幫忙嗎?
我認爲你需要在構造函數的開頭調用'this.inherited(arguments);'。你也可以在dojoConfig中正確定義d3和c3包。 – frank
我在構造函數的開頭添加了'this.inherited(arguments);',並且對於_dojoConfig_,我認爲它設置的很好,因爲我可以使用_c3_作爲dojo模塊。 我做了一個小實驗,將前一個模塊包裝在一個對象中(使用_declare_,而不從_WidgetBase_繼承),並且它不工作... 也許_c3_不喜歡什麼時候用_declare_包裝? – Souf