我正在尝试加载高图时有几个文件。我怀疑时间问题,但我无法确定问题是什么。该图表似乎有时会加载但不会加载其他图表,我收到错误: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模板中,但我尝试以不同的方式进行操作。我尝试过的任何一种方式都没有运气。
答案 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
选项值的函数没有括号,您想要传递函数,而不是调用它们。我还使用=>
将render
和buildChart
切换为绑定函数,以便在this
调用它们时得到正确的$.getScript
。