2012-05-10 14 views
5

Estoy tropezando con mi primer proyecto de red troncal y estoy tratando de actualizar la URL después de hacer clic en un elemento de botón.Backbone: actualización de la URL de la función de vista

Puedo establecer manualmente la URL a través de window.location.hash, pero supongo que esta no es la forma correcta. ¿Alguien puede decirme cuál es la forma preferida de actualizar la URL?

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

¡Gracias!

+0

En caso de que alguien más se encuentre con esto ... la solución fue usar propertiesRouter.navigate ("/ '+ orgID +'/'+ projectID +'", {trigger: true}); – Matt

Respuesta

8

Definitivamente puede llamar al window.location.hash, pero esto rompe parte de la separación que la red troncal intenta crear para usted. Una mejor opción es llamar al router.navigate(..). Ver http://backbonejs.org/#Router-navigate

+0

Gracias por su rápida respuesta. Yo había estado usando router.navigate() pero no acerté el disparador: variable verdadera en la documentación. ¡Gracias de nuevo! – Matt

Cuestiones relacionadas