2013-05-25 6 views
6

के साथ विशिष्ट जेएस फ़ाइल को पुन: प्रस्तुत करना मैं Rails 4 के साथ काम कर रहा हूं और Turbolink मणि में निर्मित करना चाहता हूं। मैं इसके साथ खुश हूं, सिवाय इसके कि मैं इसे प्रत्येक पृष्ठ अनुरोध पर जेएस फाइलों में से एक को फिर से लोड करना चाहता हूं।टर्बोलिंक सक्षम

दूसरे शब्दों में मैं टर्बोलिंक्स को अनदेखा करने के लिए एक विशिष्ट जेएस फ़ाइल चाहता हूं, मैं यह कैसे कर सकता हूं?

उत्तर

7

आप टर्बोलिंक से 'पृष्ठ: लोड' ईवेंट का उपयोग प्रारंभिक कार्य को जोड़ने के लिए कर सकते हैं। इसे हमेशा तब कहा जाएगा जब टर्बोलिंक्स आपके नए पेज को पूरी तरह से रीयलोड कर देगा।

:

function initialize() { 
    //js code what you want run always 
} 

$(document).ready(initialize); 
$(document).on('page:load', initialize); 

आप jQuery काफी उपयोग करते हैं, तो यह आपके Gemfile

gem 'jquery-turbolinks' 

और अपने application.js

//= require jquery 
//= require jquery.turbolinks 

Turbolinks दो अन्य उपयोगी घटनाओं है में स्थापित करने के लिए उपयोगी है

page:fetch //when new page begin to download 
page:change //when the page has changed over 
+1

समस्या जो आपको यहां ध्यान में रखना है हालांकि यह हर बार लोड होने पर, यह पहले से लोड की गई स्क्रिप्ट के अतिरिक्त लोड हो रहा है। तो यदि आप पूर्व में लिपि में घटनाओं को बाध्यकारी कर रहे हैं, तो वे बार-बार बंधे रहेंगे। अभी भी इससे बचने के लिए सबसे अच्छा समाधान ढूंढ रहे हैं। – ifightcrime

+1

मुझे लगता है कि, ये समस्याएं नवीनतम टर्बोलिंक्स और jquery-turbolinks के साथ अब और मौजूद नहीं हैं ... आप अपने डोम तत्व में हमेशा एक अतिरिक्त कक्षा जोड़ सकते हैं, जो कई बाध्यता से बचने के लिए एक सेफफर के रूप में काम कर सकता है ... '$ (#yourselector: नहीं (.bounded))। addClass ('बाध्य')। ('एक घटना', do_this); ' – Zoltan

+2

सही, बस लोगों को जागरूक करना चाहता था। कुछ ऐसा लगता है जो बहुत व्यापक रूप से उल्लेख नहीं किया गया है। मैंने एक त्वरित स्क्रिप्ट लिखी है जो अगले पृष्ठ को लोड होने से पहले जोड़े गए किसी भी ईवेंट को स्वचालित रूप से अनबिंड करता है। – ifightcrime

संबंधित मुद्दे