1

ハイチャートを読み込もうとしているファイルがいくつかあります。タイミングに問題があると思われますが、何が問題なのか特定できません。チャートが時々読み込まれるように見えますが、他のものは読み込まれず、次のエラーが表示されますUncaught TypeError: Object [object Object] has no method 'highcharts'

これが私のバックボーン ビューです。

namespace "happiness_kpi", (exports) ->
  exports.chartView = Backbone.View.extend

    template: HandlebarsTemplates['templates/chart']

    el: '#lineChart'

    initialize: ->
      $.getScript "http://code.highcharts.com/stock/highstock.js", success: @buildChart()

    render: ->
      @$el.html HandlebarsTemplates.chart()

    buildChart: ->
      $.getScript "build_chart.coffee", success: @render()

そして、ここにチャートを構築する私のjsファイルがあります:

$ ->
  $.getJSON "http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-  c.json&callback=?", (data) ->

    # Create the chart
    $('#lineChart').highcharts "StockChart",
      rangeSelector:
        selected: 1

      title:
        text: "Just Checking"

      series: [
        name: "Oakland University"
        data: data
        tooltip:
          valueDecimals: 2
      ]

私は元々スクリプトを hamlbars テンプレートにロードしていましたが、別の方法で試してみました。私はどちらを試しても運がありませんでした。

4

1 に答える 1

0

これがあなたの問題かどうかはわかりませんが、これは次のとおりです。

$.getScript ..., success: @buildChart()

あなたが思っていることをしません。@buildChartの引数リスト$.getScriptが構築されているときに呼び出され、オプションの値として返される$.getScriptものを確認します。の呼び出しについても同様です。@buildChartsuccess$.getScriptbuildChart

さらに、$.getScriptオプション オブジェクトから成功のコールバックを取得せず$.ajax$.getScript2 番目の引数を関数にしたいだけです。

jQuery.getScript( url [, success(スクリプト, textStatus, jqXHR) ] )

説明: GET HTTP 要求を使用してサーバーから JavaScript ファイルをロードし、それを実行します。

おそらく次のように言いたいでしょう。

initialize: ->
  $.getScript "http://code.highcharts.com/stock/highstock.js", @buildChart

render: =>
  @$el.html HandlebarsTemplates.chart()

buildChart: =>
  $.getScript "build_chart.coffee", @render

オプション値である関数に括弧はありませんsuccess。関数を呼び出すのではなく、関数を渡します。また、呼び出し時に正しい関数を取得できるように、バインドされた関数renderに切り替えました。buildChart=>this$.getScript

于 2013-07-25T21:31:59.137 に答える