私はチャートJSを使用するモバイルアプリケーションで作業しています。私はアイコンをクリックしてグラフを描く必要がある1つの場所にくっついています。最初のテンプレートのアイコンをクリックして2番目のテンプレートのグラフをレンダリングします
問題はアイコンがtemplate1.htmlにあり、グラフがtemplate2.htmlに描画されていることです。私はangularJSを使用しています。したがって、各チャートにはそのコントローラがあります。
したがって、チャートのすべてのコードはtemplate2Controllerにあります。質問は、template1.htmlのアイコンをクリックして、template2.htmlにグラフを描画する方法を示します。
template1.html
<button class="" ng-click="daily()"> </button>
template2.html
<div id="dailyTab" class="chart" > <canvas id="dailyChart" ></canvas> </div>
template2Controller
$scope.daily = function() {
$http.get('jsonAPIURL'
).success(function(response) {
var dailyCoffee = [];
angular.forEach(response, function(value, key) {
dailyCoffee.push(value.Currency);
});
var daily = {
labels: ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'],
datasets: [{
backgroundColor: "rgb(3,191,179)",
data: dailyCoffee
}]
};
var ctx = document.getElementById('dailyChart').getContext('2d');
var chartDaily = new Chart(ctx, {
type: 'bar',
data: daily,
options: {
responsive: true
}
});
});
};
ただし、template2.htmlでグラフをレンダリングしませんか? template2.htmlのの下に送信されたグラフIDがあります。 –
イベントのコードはtemplate2.htmlにレンダリングする必要があります。そうでない場合は、レンダリングするコードに問題があると思われますが、デバッガを使用するとコントローラ2のコードが呼び出されます。 –
ありがとうございます!あなたは私の問題を解決しました! :) –