2016-03-15 87 views
0

我使用this tutorial在我的Rails应用程序中加载页面特定的JavaScript。我的文件结构如下所示:只有document.ready代码在Rails页面重新加载时运行

app/assets/javascripts/ 
├── application.js 
├── charts.coffee 
├── dashboard 
│   └── settings.js 
├── dashboard-bundle.js 
└── static_pages.coffee 

我预编译我的资产config.assets.precompile += %w(*-bundle.js)和文件dashboard-bundle.js只是由线路//= require_tree ./dashboard/。然后,在我想要加载JavaScript的页面上,我加入了包含= javascript_include_tag 'dashboard-bundle'的JavaScript。

这里是长什么样我settings.js文件的一部分,就像一个样本:

$(document).ready(function(){ 
    alert('Page and Javascript loaded!'); 
}); 
$('#renderChart1').click(function() { 
    alert('You want to edit options for chart1!'); 
}); 

当我第一次从另一个页面加载页面,都提醒出现在适当的时间;第一次在页面加载,第二次当我点击#renderChart1按钮。

但是,当我重新加载页面而不先转到其他页面时,只有第一个警报正常工作。点击按钮时,警报不会出现。

我已经试过安装jQuery Turbolinks但这并没有解决问题。

回答

1

我觉得#renderChart1加入DOM结合.click()方法之后,你应该移到document.ready,以确保该元素加载到DOM,像这样:

$(document).ready(function(){ 
    alert('Page and Javascript loaded!'); 
    $('#renderChart1').click(function() { 
    alert('You want to edit options for chart1!'); 
    }); 
}); 
相关问题