我正在尝试升级我的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/