JavaScriptとbackbone.jsを学び、小さなWebアプリケーションを開発しようとしています。 しかし、問題は私のページ(グラフ)が何度も再ロードされていることです(予想以上)。したがって、ページが安定してグラフが表示される前に、ページが自動的に何度も(超高速で)リロードされます。私が「ブラウザのリロード」と言うとき、Google Chromeのリフレッシュアイコンのリロードアイコンが/(正回転、逆回転を何回も)リフレッシュし、最後にデータが表示されます。何度もページをリフレッシュ/リロードする
以下は私が今まで試したことの短いバージョンです。私は学習段階に入っているので、正しいコーディング基準を作成していない可能性があります。それで私を抱きしめてください。
したがって、フロントページにグラフを表示する必要があります(後で同じページにグラフを追加する必要があります)。グラフのデータはRESTサービスからのものです。
HTML:
私は、グラフデータを表示するには1つのアンカー、および1つのテンプレートを持っています。
<div id ="chartAnchor1"></div>
<script id="myChart-template" type="text/template">
<canvas id="lineChart"></canvas>
</script>
ビューモデル
これは、グラフの特定のデータのためのものである:
var firstSubViewModel = Backbone.View.extend({
template: _.template($('#myChart-template').html()),
events: {
'click .Refresh': 'fetchModelData'
},
fetchModelData: function() {
this.model.initialize();
},
render: function()
{
$(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: [{
data: this.model.attributes.incThisYear
}, {
data: this.model.attributes.incLastYear
}]
},
labelString: 'Income in $'
}
}]
}
}
});
},
initialize: function() {
_.bindAll(this, "fetchModelData");
this.model.on('change', this.render, this);
}
});
return firstSubViewModel;
});
コントローラー:
var ch = new dashboardModel.chart({});
if (// some condition) {
var data = { // some data};
ch.fetch(data)
}
//Main Graph on Dashboard
new firstSubViewModel({
el: '#chartAnchor1',
model: ch
});
});
モデル: 私はRESTサービスからデータを取得する1つのモデルクラスを持っています。
質問:ページが5-6回更新され、最終的にグラフが完全に読み込まれます。
脚注:私のレンダリング機能に問題はありますか?親切にガイドします。
fetchModelDataとは何ですか?どのように/それはいつ呼び出されますか?なぜあなたはそれを二度定義しましたか? 'this.model.initialize();' - なぜ手動でモデルの初期化を呼び出すのですか?あなたはあなたが 'this.model.on( 'change'、this.render、this)と書いたことを知っていますか? –
こんにちは、ありがとうございました。 2回書かれたメソッドは、コードをSOに貼り付ける際にタイプミスがありました。私はそれを取り出した。また、 'fetchModelData'関数をコメントしてもらいたいですか?私はモデルを初期化し、 '_.bindAll()'から呼び出す必要があると思った。 – Unbreakable
@TJ:DBの現在の値でグラフを更新するグラフの近くに1つのリフレッシュボタンがある。リフレッシュボタン/イベントが呼び出されたときに 'fetchModelData'を呼び出しました。コード内に一度 'コードを見てください。私は、コードに不足している' refresh event'スニペットを追加しました。私はいくつかばかげたことをしましたか?ご案内ください。 – Unbreakable