さて、ChartistJSというグラフ作成ライブラリがあります。axisTitleを表示するために、 Axistitleプラグインと呼ばれるプラグインを使用しています。問題を強調するためにプランカーを作成しました。問題は、ドロップダウンを開いたときに、選択したオプションに基づいて別の軸タイトルを表示したいということです。シンプルに聞こえます。
chartist-plugin-axistitle.js
ここで、 44 行目と 49 行目のソース コードに移動すると、2 つのconsole.logs(options)
. 開発者コンソールを開き、コンソールをクリアして、ドロップダウンから距離のオプションを選択します。44 行目と 49 行目に 2 つの console.log() が表示されます。44 行目と 49 行目の変数axisY.axistitle
をaxisY.axistitle
見てください。Distance(km)
1 つは期待値である 44 行目にある必要があり、49 行目のものは になりますUnit
。なんで?上記の行の値は に変更されていますがDistance(km)
、まだUnit
? 実行されて出力されていますが、関数が更新された値を取得していないのはなぜですか? 私はそれが閉鎖と関係があるにおいがしますか?どうすればこれを解決できますか? その中のオプションの更新された値を取得するにはどうすればよいですか?
助けていただければ幸いです。ありがとう
編集
ここで最小限のコードを提供することになっているためです。
Chartist.plugins.ctAxisTitle = function(options) {
options = Chartist.extend({}, defaultOptions, options);
console.log(options); // I get updated values
console.log("I am printed everytime too. Because I am supposed too.");
return function ctAxisTitle(chart) {
console.log("I will get printed first time but not subsequent times. I don't know why?");
chart.on('created', function(data) {
console.log("I am printed every time as chart is re-rendered/created every time it is updated");
console.log(options); //Should be closure of above value. But I won't take updated options value. I'll stick with the one I was initialized with. Coz I am stupid.
});
};
};