Rails de javascript ne fonctionne qu'à partir de rechargement
Le problème est exactement ce que le titre dit. Le javaScript est dans l'asset pipeline j'.e actifs/javascripts/monfichier.js.le café Dans le application.js j'ai:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require jquery.ui.all
//= requier twitter/bootstrap
//= require jasny-bootstrap
//= require_tree .
C'est la coffeescript
$(document).ready ->
$("#close").click ->
$(this).parent().parent().slideUp("slow")
$( "#datepicker" ).datepicker
dateFormat : "yy-mm-dd"
player_count = $("#player option").length
$('#btn-add').click ->
$('#users option:selected').each ->
if player_count >= 8
$('#select-reserve').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
$(this).remove()
else
$('#player').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
$(this).remove()
player_count++
$('#btn-remove').click ->
$('#player option:selected').each ->
$('#users').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
$(this).remove()
player_count--
$('#btn-remove-reserve').click ->
$('#select-reserve option:selected').each ->
$('#users').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
$(this).remove()
$("#submit").click ->
$("select option").prop("selected", "selected")
Je peux voir dans le code source du navigateur que le javaScript a été chargé, mais il ne fonctionne qu'après que j'ai recharger la page.
- Je vais avoir le même problème, si je ne suis pas à l'aide de CoffeeScript. pastebin.com/d5QKXydy
Vous devez vous connecter pour publier un commentaire.
Pour turbolinks 5.0, vous devez utiliser le turbolinks:charge événement, qui est appelée la première fois au chargement de la page et à chaque fois sur un turbolink visite. Plus d'infos: https://github.com/turbolinks/turbolinks#running-javascript-when-a-page-loads
CoffeeScript code:
Code JavaScript:
C'était un turbolinks problème. Grâce à @zwippie pour me mener dans la bonne direction!
La solution était d'envelopper mon coffeescript dans ce:
page:load
événement. Donc, dans mon exemple, j'ai enveloppé le code que j'ai envie de courir à l'intérieur d'une fonction appelé prêt, et a ajouté que comme un callback à exécuter après l'page:load
événement.Je suppose que c'est un turbolinks question.
Supprimer turbolinks de votre projet ou de modifier votre script à quelque chose comme:
Comme mentionné ici.
'page:change'
j'ai utilisé'turbolinks:load'
.Vous pouvez installer le jquery.turbolinks gem pour résoudre le problème sans changer votre Javascript.
Vous pouvez avoir votre jquery.turbolink place à la bonne position, comme ce
Et dans le Gemfile vous pouvez installer le
jquery-turbolinks gem
Rails 5
Utiliser le jquery.turbolinks gem et à l'aide de
Si vous travaillez avec des plugins JQuery comme Le Temps De L'Horloge Du Sélecteur De, tout d'abord utiliser jQuery
document ready
fonction, ce qui provoque votre script à attendre jusqu'à ce que la page est entièrement chargée avant de tenter d'exécuter et puis vous pouvez utiliserturbolinks:load
événement.Il est bon d'être situé dans votre
app/assets/javascripts/... js
fichierJe suis en train de Rails 5.2 et a constaté que
'turbolinks:load'
n'étais pas chargé la première fois qu'une page se charge. C'est ce que je devais faire dans mon CoffeeScript fichier.