2013-07-25 33 views
1

我有幾個文件正在嘗試加載高圖。我懷疑有時間問題,但我不能指出問題所在。該圖表似乎有時加載,但不是其他人,我得到的錯誤:Uncaught TypeError: Object [object Object] has no method 'highcharts'任何想法?在使用主幹和導軌加載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

我剛修好了縮進。他們現在鏡像我的文件。 – ndland

回答

0

我不知道,如果這是你的問題或沒有,但這樣的:

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

沒有做什麼,你認爲它。當$.getScript的參數列表正在構建,並且$.getScript將看到任何@buildChart返回爲success選項的值時,將調用@buildChart。請撥打電話buildChart$.getScript同樣。

此外,從選擇對象的方式$.getScript沒有得到它的成功回調$.ajax確實,$.getScript只是希望第二個參數是函數:

jQuery.getScript(url [, success(script, textStatus, jqXHR) ])

Description: Load a JavaScript file from the server using a GET HTTP request, then execute it.

你可能想這樣說:

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

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

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

對於success選項值的函數沒有括號,您想傳遞函數,而不是調用它們。我還使用=>renderbuildChart切換爲綁定函數,以便在$.getScript調用它們時獲得正確的this

+0

這是更接近,但似乎仍然沒有工作。看起來,爲了調用其他功能,這些parens是必要的。我有控制檯記錄功能,我可以看到他們被調用的順序,但我仍然得到相同的錯誤。我現在也想知道,如果他們在buildChart函數中使用Script是正確的方法。到目前爲止,當我測試代碼時,它正在執行一個'GET',我認爲這不是必須的。 – ndland

+0

對不起,我錯過了'$ .getScript'參數約定,請檢查我的更新。 –

+0

好的,所以我能夠得到在頁面上呈現的圖表。我最終做的是將build_chart代碼移到我的視圖中。一旦我做到了,圖表就會零星呈現。然後我意識到問題在於Highcharts庫在頁面呈現之前沒有足夠快的加載速度。我現在正在努力將Highcharts圖書館本地移動到應用程序,我認爲這應該完全解決問題。 – ndland