0

私は次のコードを持っています:

アセット/javascript/activities.js.coffee

jQuery ->
    graph = new Highcharts.Chart
        chart: 
            renderTo: "activity_graph"
            type: 'column'

        exporting:
            buttons:
                printButton:
                    enabled: true   
....

アセット/javascript/activity_groups.js.coffee

jQuery -> 
    $('ul').children('ul').hide()

アクティビティファイルに新しいHighcharts.Chartがある場合、activity_groupファイルは機能しません。新しいHighcharts.Chartにコメントすると、正常に機能します。両方のファイルが正しくロードされます。なぜこれが起こるのですか?

[編集1]

遊んでいたのですが、$('ul').children('ul').hide()前に置いgraph = new Highcharts.Chartても期待通りに動くことに気づきました。ただし、同じファイルに配置したくないし、必ずしもグラフ変数の前に配置する必要もありません。

[編集2]

動作していないと思う理由が1つ見つかりました。私はjavascriptについてあまり知識がありません。キャッチされていないHighchartsエラー#13:

Highchartsエラー#13

レンダリングdivが見つかりません

このエラーは、chart.renderToオプションの設定が誤っているため、HighchartsがグラフをレンダリングするHTML要素を見つけることができない場合に発生します。

私のマークアップには、必要な場所にのみactivity_graph divが含まれています(私のアクティビティではビューを表示します)。他のどこにも含まれていません。そのため、このエラーが発生していると思います。でも他のどこにも使いたくない…何か考えはありますか?

[編集3]

これは、レールを使用して生成しているマークアップです。

= content_tag :div, "", id: "activity_graph", data: {name: graph.name, minutes: graph.minutes, year: graph.year, month: graph.month, day: graph.day, data_hash: graph.data_hash}

id activity_graphでdivを取得すると、グラフが問題なく表示されます。このページを表示しているときにエラーがポップアップしません...ただし、別のページに移動すると、このdivとidがなくなったため、エラーがポップアップします...

4

1 に答える 1

1

私は条件付きを置くことになった。div要素が存在する場合にのみ、renderToを実行する必要があります。これを行うと、エラーは消えました。

于 2012-10-11T12:36:47.630 に答える