2012-05-10 16 views
5

İlk omurga projemden tökezliyorum ve bir düğme öğesine tıklandıktan sonra URL'yi güncellemeye çalışıyorum.Omurga - Görünümden görünüm URL'sini güncelle

URL'yi window.location.hash aracılığıyla manüel olarak ayarlayabilirim, ancak bunun doğru yol olmadığını varsayıyorum. URL'yi güncellemenin tercih edilen yolu nedir?

var AppView = Backbone.View.extend({ 
    events: { 
     "click #loadProject": "filterProject", 
    }, 
    filterProject: function(){ 
     var projectID = $('#selectProject option:selected').val(); 
     var orgID = 'test'; 

     // Is there a better way to do this? 
     window.location.hash = '/'+orgID+'/'+projectID; 

     this.renderProject(orgID,projectID); 
    }, 
    renderProject:function(orgID,projectID){ 
    //Some code 
    }, 
}); 

//Routing 
var PropertiesRouter = Backbone.Router.extend({ 
    routes: { 
     "/:who/:project":"getProjects", //#/org/1 
     "/:who":"getOrganisation", //#/org 
     "*actions": "defaultRoute"   
    }, 
    getProjects:function(who,project){ 
     app.renderProject(who,project); 
    }, 
    getOrganisation:function(who){ 
     app.renderOrganisation(who); 
    }, 
    defaultRoute: function(actions){ 
     app.renderHomePage(); 
    }, 
}); 

var app = new AppView(); 
//create router instance 
var propertiesRouter = new PropertiesRouter(); 
//start history service 
Backbone.history.start(); 

teşekkürler!

+0

Sadece bir başkasının bu konuya rastlaması halinde ... çözüm, propertiesRouter.navigate ("/ '+ orgID +'/'+ projectID +'", {trigger: true}) kullanmaktı; – Matt

cevap

8

Kesinlikle window.location.hash numaralı telefonu arayabilirsin, ancak bu, ayırma omurgasının sizin için oluşturmaya çalışmasından bazılarını parçalıyor. Daha iyi bir seçenek router.navigate(..)'u aramaktır. Bkz. http://backbonejs.org/#Router-navigate

+0

Hızlı cevabınız için teşekkür ederiz. Router.navigate() 'i kullanıyordum ama tetiği atladım: belgelerindeki gerçek değişken. Tekrar teşekkürler! – Matt

İlgili konular