【问题标题】:Having some trouble loading highcharts using backbone and rails使用主干和导轨加载 highcharts 时遇到一些问题
【发布时间】:2013-07-27 01:10:40
【问题描述】:

我正在处理几个文件,试图加载一个高图。我怀疑时间有问题,但我无法指出问题所在。该图表有时会加载,但有时不会加载,我收到错误消息: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 模板中加载了脚本,但我尝试以不同的方式进行。无论我尝试过哪种方式,我都没有运气。

【问题讨论】:

  • 我刚刚修复了缩进。他们现在镜像我的文件。

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


【解决方案1】:

我不确定这是否是您的问题,但这是:

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

没有做你认为它做的事。这将在构建$.getScript 的参数列表时调用@buildChart,并且$.getScript 将看到@buildChart 返回的任何success 选项的值。对于buildChart 中的$.getScript 调用也是如此。

此外,$.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 选项值的函数上没有括号,您想传递函数,而不是调用它们。我还使用=> 将render 和buildChart 切换到绑定函数,以便在$.getScript 调用它们时它们得到正确的this。

【讨论】:

  • 这更接近了,但似乎仍然无法正常工作。为了调用其他函数,似乎需要括号。我已经控制台记录了这些函数,我可以看到它们被调用的顺序,但我仍然遇到同样的错误。我现在也想知道,他们在 buildChart 函数中的 getScript 是否是正确的方法。截至目前,当我测试代码时,它正在执行GET,我认为没有必要。
  • 抱歉,我错过了 $.getScript 参数约定,请检查我的更新。
  • 好的,所以我能够获得页面上呈现的图表。我最终做的是将 build_chart 代码移到我的视图中。一旦我这样做了,图表就会偶尔呈现。然后我意识到问题在于 Highcharts 库在页面呈现之前加载速度不够快。我现在正在努力将本地的 Highcharts 库移动到应用程序,我认为这应该可以完全解决问题。
猜你喜欢
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
  • 2013-04-18
相关资源
最近更新 更多