未捕获的TypeError:App.Chart不是构造函数(...)

时间:2016-11-14 23:51:45

标签: javascript ruby-on-rails constructor turbolinks

我正在尝试升级我的Rails应用以使用TurboLinks。为了使其工作,我的所有javascripts都需要命名空间。我开始使用以下内容:

var CHART; CHART = {

    input_x: []
    input_y: []

    drawChart: function() {
       ...some code
    }

}

然后我可以从咖啡脚本中调用它,如下所示:

$(document).on "page:change", ->

  if $(".portal.show").length > 0

    # Load map
    CHART.drawChart()

此方法的问题是当用户离开门户/显示页面然后返回时,CHART对象不会重置。如果代码更复杂,变量不会重置,可能会导致问题。

我正在尝试了解如何创建模块。但是,我遇到以下错误:

Uncaught TypeError: App.Chart is not a constructor(…)

CoffeeScript的:

$(document).on "page:change", ->

  if $(".portal.show").length > 0

    chart = new App.CHART()
    chart.drawChart()

使用Javascript:

App.CHART = (function() {

    function CHART() {
        this.input_x = [];
        this.input_y = [];
    }

    CHART.prototype.drawChart = function () {
        ...some code
    }

    return CHART;

})();

最佳行动方案是什么?

我尝试过使用此博客文章中的指南,但我试图将我复杂的javascript保存在javascript中,而不是转换为CoffeeScript: http://brandonhilkert.com/blog/organizing-javascript-in-rails-application-with-turbolinks/

0 个答案:

没有答案