2
我正在使用Backbone.js,我有四個模板顯示4個圖。一切工作正常,但只有問題是我的頁面刷新所有圖形在用戶界面上呈現四次。頁面的刷新發生得非常快。在頁面/圖形開始顯示之前,Chrome的刷新圖標超快速閃爍。頁面呈現正確,但刷新很多時間
我正在使用jQuery的when then
以確保我的模型在視圖開始呈現之前完全獲取。另外,我爲圖的所有視圖模型調用this.render()
四次。這顯然是需要的,因爲我有四個模板。有人能指導我什麼可能是問題。
first viewmodel:
initialize: function() {
this.model.on('change', this.render, this);
this.render();
}
對於所有四種視圖模型重複相同的事情。
一個圖形的實際視圖模型:
define(['backbone'], function(Backbone) {
var firstSubViewModel = Backbone.View.extend({
template: _.template($('#myChart-template').html()),
/**
* render function. Renders data onto graph.
* @param none
*/
render: function() {
console.log("inside first sub view render");
$(this.el).html(this.template());
var ctx = $(this.el).find('#lineChart')[0];
var lineChart = new Chart(ctx, {
type: 'line',
data: {
labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
datasets: [{
label: "This Year",
backgroundColor: "rgba(38, 185, 154, 0.31)",
data: this.model.attributes.incThisYear
}, {
label: "Last Year",
backgroundColor: "rgba(3, 88, 106, 0.3)",
borderColor: "rgba(3, 88, 106, 0.70)",
data: this.model.attributes.incLastYear
}]
},
options: {
scales: {
yAxes: [{
scaleLabel: {
display: true,
labelString: 'Income in $'
}
}]
}
}
});
},
initialize: function() {
console.log("inside first sub view initialize");
this.model.on('change', this.render, this);
this.render();
}
});
return firstSubViewModel;
});
你不應該使用'$(this.el)',已經有'這$ el'快捷。 '$(this.el).find('#lineChart')'同樣,使用'this。$('#lineChart')'代替。 –