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$.getScript只是希望第二个参数是函数:

jQuery.getScript( url [, 成功(脚本, 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,您要传递函数,而不是调用它们。我还切换renderbuildChart绑定函数 using=>以便它们在调用它们this时得到正确的。$.getScript

于 2013-07-25T21:31:59.137 回答