2016-04-01 26 views
0

İç içe geçmiş görünümünde omurga uygulamasında rotalarla gezinmek istiyorum. Ertesi kod var: rota olduğundaiç içe geçmiş görünümleri omurga yolları

var StoreRouter = Backbone.Marionette.AppRouter.extend({ 

    appRoutes: { 
    'item/:name/' : 'showItem', 
    "item/:name/species/:speciesName/" : "showSpecies" 
    } 

}); 

var StoreCtrl = Marionette.Object.extend({ 

    showItem: function(name){ 
    console.log("showItem"); 
    /* execute function for show Item */ 
    }, 

    showSpecies: function(name, speciesName){ 
    console.log("showSpecies"); 
    /* execute function for show Species inside Item Layout */ 
    } 

}); 

Yani, türler göstermek gerekir "öğesi /: ad/türler /: speciesName /" ama sadece ikisi değil showSpecies fucntion tetikleme olsun. ShowItem'i tetiklemek için ne yapmalıyım ve sonra rota "item /: name/species /: speciesName /" olduğunda "ShowSpecies" işlevlerini gösterir miyim?

cevap

1

Burada yeni bir şey yok. Sadece showSpecies numaralı telefondan showItem işlevini doğrudan arayın.
Ayrıca, yerine appRoutes ait routes karma kullanabilir ve daha sonra bunu yapmak mümkündür:

var StoreRouter = Backbone.Marionette.AppRouter.extend({ 

    routes: { 
    'item/:name/' : 'showItem', 
    'item/:name/species/:speciesName/' : function(){ 
     this.showItem(); 
     this.showSpecies(); 
    } 
} 

});

+0

Teşekkür ederiz. Ama benim durumumda, bu çözüm, başka bir tür göstermek istediğimde her seferinde öğenin yeniden yüklenmesine neden oluyor. Yeniden yükleme öğesinden kaçmanın ve /: speciesName/changes olduğunda yalnızca uygun türleri göstermenin bir yolu var mı? –

+0

@PavelPoberezhnyi tabi ki. Mevcut öğenizi bir yere kaydedebilir ve 'showItem' işlevinin başlangıcında kontrol ekleyebilirsiniz:' if (currentItem === newItem) false; ' –

+0

Teşekkür ederiz, deneyeceğim –

İlgili konular