2012-05-10 28 views
5

Tôi đang vấp ngã qua dự án xương sống đầu tiên của mình và đang cố gắng cập nhật URL sau khi nhấp vào phần tử nút.Xương sống - Cập nhật URL từ chức năng xem

Tôi có thể đặt URL theo cách thủ công qua window.location.hash, nhưng tôi cho rằng đây không phải là cách chính xác. Bất cứ ai có thể cho tôi biết cách ưa thích để cập nhật URL là gì?

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(); 

Cảm ơn!

+0

Chỉ trong trường hợp bất kỳ ai khác đi qua điều này ... giải pháp là sử dụng propertiesRouter.navigate ("/ '+ orgID +'/'+ projectID +'", {trigger: true}); – Matt

Trả lời

8

Bạn chắc chắn có thể gọi window.location.hash, nhưng điều này làm vỡ một số xương sống tách đang cố gắng tạo cho bạn. Lựa chọn tốt hơn là gọi router.navigate(..). Xem http://backbonejs.org/#Router-navigate

+0

Cảm ơn bạn đã trả lời nhanh chóng. Tôi đã sử dụng router.navigate() nhưng đã bỏ lỡ trigger: true variable trong tài liệu. Cảm ơn một lần nữa! – Matt

Các vấn đề liên quan