使用骨干和rails加载高级图表时遇到一些问题

时间:2013-07-25 20:56:08

标签: ruby-on-rails-3 backbone.js highcharts coffeescript

我正在尝试加载高图时有几个文件。我怀疑时间问题,但我无法确定问题是什么。该图表似乎有时会加载但不会加载其他图表,我收到错误: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模板中,但我尝试以不同的方式进行操作。我尝试过的任何一种方式都没有运气。

1 个答案:

答案 0 :(得分:0)

我不确定这是不是你的问题,但是这个:

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

不符合您的想法。这将在构建@buildChart的参数列表时调用$.getScript$.getScript会看到@buildChart返回success选项的值。同样适用于$.getScript中的buildChart来电。

此外,$.getScript没有按照$.ajax的方式从选项对象获得成功回调,$.getScript只想让第二个参数成为函数:

  

jQuery.getScript(url [,success(script,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切换为绑定函数,以便在this调用它们时得到正确的$.getScript