2016-11-23 11 views
0

私はウェブページを作成しています。このWebページでは、Chartjsファイルをロードします。私の構造をきれいに保つ。私は、Chartオブジェクトを外部の "scripts.js"ファイルに置き、それをスクリプトとしてHTMLで呼び出す必要があります。私はFlaskを使ってウェブサイトを作成しています。FlaskのjavascriptファイルからHTMLへの外部Chartjsグラフの呼び出し

HTMLにすべてのコードを含めるとうまく動作しますが、JSスクリプトをインポートできるようには見えません。私を助けてください。ありがとうございました。

試み: "scripts.js":

function linechart() { 
    const LINECHART = document.getElementById("lineChart") 

    let lineChart = new Chart (LINECHART, { 
      type: 'line', 
      data: { 
       labels: {{ data_date|tojson|safe }}, 
       datasets: [{ 
         responsive: false, 
         label: "Share Price", 
         fill: false, 
         lineTension: 0.1, 
         backgroundColor: "rgba(75,192,192,0.4)", 
         borderColor: "rgba(75,192,192,1)", 
         borderCapStyle: 'butt', 
         borderDash: [], 
         borderDashOffset: 0.0, 
         borderJoinStyle: 'miter', 
         pointBorderColor: "rgba(75,192,192,1)", 
         pointBackgroundColor: "#fff", 
         pointBorderWidth: 1, 
         pointHoverRadius: 5, 
         pointHoverBackgroundColor: "rgba(75,192,192,1)", 
         pointHoverBorderColor: "rgba(220,220,220,1)", 
         pointHoverBorderWidth: 2, 
         pointRadius: 1, 
         pointHitRadius: 10, 
         data: {{ data_close|tojson|safe }}, 
         spanGaps: true, 
        }] 
      }, 

      // orientate the labels to be 90 degrees on x-axis 
      // credit: https://stackoverflow.com/questions/35022830/chart-js-change-label-orientation-on-x-axis-for-line-charts 
      options: { 
       scales: { 
        xAxes: [{ 
         ticks: { 
          autoSkip: true, 
          maxTicksLimit: 6, 
          autoSkipPadding: 2, 
          maxRotation: 0, 
          minRotation: 0 
         } 
        }] 
       } 
      } 
    }); // end of lineChart 
} 

HTML:コードは、HTMLファイル内に正常に実行さ

<head> 
<script src="{{ url_for('static', filename='scripts.js') }}"></script> 
</head> 

<canvas id="lineChart" width="20" height="20"></canvas> 

<script> 
    linechart() 
</script> 
+0

あなたのhtmlは、Flaskが実際のhtmlに変換するテンプレートコードです。出力はどのように見えますか?ブラウザでページを開き、最終的なhtmlを見るために「ソースを表示」を使用します。 '{{}} 'の中の部分は、javascriptファイルの正しい場所を指していない可能性があります。また、URLを直接入力すると、Flask Webサーバーがjavascriptファイルを提供していることを確認する必要があります。 –

+0

これは本当に問題でした。javascriptのデータは{{}}のために読み込まれませんでした。私はscripts.jsファイルの正しい構文に置き換えられました。ありがとうございます、私は答えとしてこれを受け入れます。 – user7202182

+0

コメントテキストも回答として提出します。 –

答えて

0

場合、問題はリソースのパスでなければなりません。ブラウザからscript.jsファイルがロードされていることを確認しましたか?

+0

返信ありがとうございます - ブラウザのコンソールを確認するとうまくロードされているようです – user7202182

+0

問題は解決されました - Haken Lidが指摘したように - {{}}で問題が作成されました。 – user7202182

0

あなたのhtmlは、Flaskが実際のhtmlに変換するテンプレートコードです。

<script src="{{ url_for('static', filename='scripts.js') }}"></script> 

ブラウザでページを開き、最終的なhtmlを表示するために「ソースを表示」を使用します。 {{ }}内の部品は交換されます。

実際のhtmlは次のようになります。

<script src="/static/scripts.js"></script> 

それは、ブラウザのJavaScriptファイルをロードして実行することはできないことを意味し、生成されたsrc URLが見つからないか、間違っていることを可能性があります。

関連する問題