我有來自外部的js文件所呈現的自定義餅圖中Dojo小部件的功能。我使用xhrget來獲取我需要填充餅圖的數據。我使用的URL包含一個全局變量,但我的問題是在設置全局變量之前調用腳本中的函數。延遲被稱爲直到全局變量被設置
這裏是我的代碼:
var chart1 = new dojox.charting.Chart2D(this.id,{fill:"transparent"});
chart1.setTheme(dojox.charting.themes.MiamiNice,{fill:"transparent"});
chart1.addPlot("default", {
type: "Pie",
labels: false,
labelStyle: "rows",
precision: -10,
fontColor: "black",
labelOffset: -20,
radius: 150
});
console.log(this.getURLFunction(this.id));
chart1.theme.plotarea.fill = undefined;
this.xhrDeferred = dojo.xhrGet({
url: this.getURLFunction(this.id)**,//"../traffic-analysis/get-ip-dist/format/json/ds/1/data/rate/tTime/1334787567/fTime/1334182767/time/604800/drilldown/true/displayedTime/enabled?dojo.preventCache=1334787568120",
sync: true,
handleAs: "json",
preventCache: true,
load: function(responseObj) {
var seriesData=[1,2,3,4,5,6,7];
chart1.addSeries("IP", dojo.map(responseObj.pieItems, function(p){
return {
y: p[1], // value
text: p[0], // label
tooltip:p[0] +": " + p[1]
};
}));
var anim_a = new dojox.charting.action2d.MoveSlice(chart1, "default");
var anim_b = new dojox.charting.action2d.Highlight(chart1, "default");
var anim_c = new dojox.charting.action2d.Tooltip(chart1, "default");
chart1.render();
var chartLegend = new dojox.charting.widget.Legend({
chart: chart1,
swatchSize: 12,
},
"chartLegend");
},
// error: function(error, args) { console.warn("error", error); }
error: function(error, args) {
_this.xhrError = true;
_this.chartStatusBar.innerHTML = chartErrorMsg(_this.id);
console.log(error);
}
});
的xhrget的URL下getURLFunction(this.id)是指一個元素在具有調用從HTML文件中的特定功能的ID的HTML。
該功能是getURL_IpDist(),它返回的xhrget會用得到它/流量分析/ GET-IP-DIST /格式/ JSON的」 + sc.toURL()中的數據的URL;
sc是在我的函數試圖抓取url之前需要設置的全局變量,這是在另一個外部javascript文件中設置的 有沒有人知道如何在變量設置之前從加載延遲dojo或javascript?
我想我忘了指定,我想提出一個定製的Dojo小部件。如此包裝只會給我一個錯誤。此外,我正在使用舊版的dojo,因爲這是我目前需要使用的。 – asqwrd 2012-04-23 19:04:29