2012-04-23 16 views
9

Backbone.js kullanarak bir uygulama yazıyorum ve sayfalar arasında animasyon yapıyorum (iphone stili kullanıcı arabirimi gibi biraz). Bir düğmeye tıkladığınızda, bir sonraki sayfa sağdan içeri doğru kayar ve bir geri düğmesine tıklamak, bir sonraki sayfayı sola kaydırır. Bir yönlendirici kullanarak tarayıcı ileri ve geri düğmeleriyle aynı şeyi yapmak istiyorum. Animasyonun doğru yönde olmasını sağlamak için hangi tuşa basıldığını (ileri veya geri) söylemek mümkün mü?omurga yönlendirmesi ileri veya geri basıldığında algılanıyor

Netleştirmek gerekirse, omurga yönlendirmesini nasıl yapacağımı sormuyorum. Ben omurga yönlendirme yaparken soruyorum, hangi düğmenin url neden değiştirebilir, geri düğmesi mi yoksa ileri düğmesi mi?

Teşekkürler

cevap

8

Tüm bağlantılarda bir tıklama olayı dinleyin. (CoffeeScript)

$(document).on 'click', 'a' -> 
    window.linkClicked = true 

Alternatif olarak, Backbone.history.navigate() müdahale edebilir. Birisi onu tıklarsa, geri dönmeyecekleri anlamına gelir, bu yüzden true'a bir bayrak ayarlayın. Ayrıca yönlendiricinizde tüm yönlendirici olayları dinleyen bir etkinlik var. Her zaman önceki parçayı saklayın (Backbone.history.getFragment()). Mevcut parçayı önceki fragmanla karşılaştırın. Aynı ise, bu işaretin true veya false olarak ayarlanmış olup olmadığını kontrol edin. false olarak ayarlanmışsa, geri döndüğünüzü biliyorsunuz, true ise o zaman değil ve bir kullanıcı bir bağlantıyı tıklattı ama aynı önceki sayfaya geldi. Son olarak, bu bayrağı false olarak sıfırlayın.

class SnazzyRouter extends Backbone.Router 
    initialize: -> 
     # This gets triggered everytime a route event gets triggered 
     @on 'all', => 
      currentFragment = Backbone.history.getFragment() 
      window.backDetected = false # assume no back detected 

      if !window.linkClicked and currentFragment == window.previousFragment 
       window.backDetected = true 

      window.linkClicked = false # reset 
      window.previousFragment = currentFragment 

window.linkClicked = false 
window.backDetected = false 
window.previousFragment = null 

snazzyRouter = new SnazzyRouter() 

Şimdi, basit bir

# Did we go back? 
console.log "I CAN'T BELIEVE WE WENT BACK!" if window.backDetected 

herhangi açıklamalar gerekiyorsa bana bildirin var (Sadece uygulamam için bu uygulamaya ve o inşaat).

+0

Bunun gerçekten soruya cevap verdiğini düşünmüyorum; tarayıcı geri/ileri düğmeleri arıyordu. – mix3d

+0

'if! Window.linkClicked ve currentFragment == window.previousFragment' Eğer kullanıcı geri düğmesini tıklatır ve tutarsa ​​bir kod bir _older_ girişi seçerse bu kod başarısız olur. –

İlgili konular