Kullanarak turbolinks ile angularjs
Angularjs benim app çerçeve turbolinks ile kullanmaya çalışıyorum. Sayfa değişikliğinden sonra yeni eventlisteners başlatılamıyor. O iş yapmak için herhangi bir yolu var mı? Şimdiden teşekkürler!
CEVAP
AngularJS vs Turbolinks
TurbolinkssıraAnguluarJSkullanıcı etkileşimine yanıt olarak bir şey ve tüm sayfayı yeniden yeniden işlenmesinden olmadan web sayfasında olur hem de bir web uygulaması daha hızlı yanıt yapmak için kullanılabilir, anlamda.
Şu açıdan da farklı:
AngularJSbir oluşturmak için yardımcı olurzengin istemci tarafı uygulamanereye JavaScript kodu bir çok yazmak istemci makine üzerinde çalışır. Bu kod, sitenin kullanıcı etkileşimli hale getirir. Sunucu tarafında arka uç ile iletişim kurar, yani Raylar app, JSON API kullanarak.
Turbolinksöte yandan, sitenin etkileşimli bir JavaScript kodu gerek kalmadan yapmak için yardımcı olur. Sana izin verirRuby/Rails kodu için sopasunucu tarafı ve hala üzerinde çalışan "sihirli" AJAX yerine, ve bu nedenle rerender, değişti. bu sayfanın tek parça
Nerede Turbolinks güçlü olarak kullanmanızı sağlayan bu güçlü AJAX mekanizması olmadan bir şey yapıyor elle ve sadece kod Ruby/Rails, orada belki bir aşama olarak uygulamanız yetişir, nerede olacak gibi entegre bir JavaScript çerçeve gibi AngularJS.
Özellikle arda uygulamanız, bir defada bir bileşen içine AngularJS entegre etmek istediğiniz bu intermedium aşamada, gayet mantıklı Açısal JS çalıştırmak için yapabilir ve birlikte Turbolinks.
Nasıl AngularJS ve Turbolinks birlikte kullanmak için
Geri el ile Açısal bootstrap kullanın
Açısal kodunuzu, uygulama modül, böyle bir şey kullandınız:
# app/assets/javascripts/angular-app.js.coffee
# without turbolinks
@app = angular.module("YourApplication", ["ngResource"])
Bu kod sayfa yüklendiğinde çalışacak. Ama beri Turbolinks sadece yerine bir kısmını sayfa ve engeller bütün bir sayfa yük, her zaman emin olun, açısal uygulama düzgün başlatılamadı ("önyüklenen"), sonra bile bu kısmi yükler tarafından yapılan Turbolinks. Bu nedenle, aşağıdaki kod ile yukarıdaki modülü bildirim değiştirin:
# app/assets/javascripts/angular-app.js.coffee
# with turbolinks
@app = angular.module("YourApplication", ["ngResource"])
$(document).on('ready page:load', ->
angular.bootstrap(document, ['YourApplication'])
)
Otomatik olarak önyükleme yok
Genellikle Açısal bir uygulama otomatik olarak HTML kodu ng-app
özniteliğini kullanarak bootstrap için nasıl öğreticiler bakın.
<!-- app/views/layouts/my_layout.html.erb -->
<!-- without turbolinks -->
<html ng-app="YourApplication">
...
Ama birlikte bu mekanizma manuel bootstrap yukarıda gösterilen kullanarak uygulama iki kez bootstrap ve, bu nedenle, fren uygulamasına neden olur.
Böylece, sadece ng-app
Bu özniteliği kaldırın:
<!-- app/views/layouts/my_layout.html.erb -->
<!-- with turbolinks -->
<html>
...
Daha Fazla Okuma
- AngularJS önyükleme: http://docs.angularjs.org/guide/bootstrap
- Turbolinks üzerinde Railscasts (geri açıklar): http://railscasts.com/episodes/390-turbolinks
Dosya Upload kullanarak angularjs...
AngularJS kullanarak ng vardır zaman k...
Nasıl ya da yeniden işleme sayfanın ta...
AngularJS toggle kullanarak sınıf-sını...
AngularJS bir yönerge kullanarak otoma...