2012-05-10 16 views
5

मैं अपनी पहली रीढ़ की हड्डी परियोजना के माध्यम से ठोकर खा रहा हूं, और एक बटन तत्व क्लिक करने के बाद यूआरएल को अपडेट करने की कोशिश कर रहा हूं।बैकबोन - दृश्य फ़ंक्शन से यूआरएल अपडेट करें

मैं मैन्युअल रूप से window.location.hash के माध्यम से यूआरएल सेट कर सकता हूं, लेकिन मुझे लगता है कि यह सही तरीका नहीं है। क्या कोई मुझे बता सकता है कि यूआरएल अपडेट करने का पसंदीदा तरीका क्या है?

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

धन्यवाद!

+0

बस किसी और के पास इस मामले में आता है ... समाधान गुणों का उपयोग करना था। राउटर.नाविगेट ("/ '+ ऑर्गिड +'/'+ प्रोजेक्ट आईडी +'", {ट्रिगर: सच}); – Matt

उत्तर

8

आप निश्चित रूप से window.location.hash कॉल कर सकते हैं, लेकिन इस तोड़ने जुदाई रीढ़ की हड्डी से कुछ आपके लिए बनाने के लिए कोशिश कर रहा है है। router.navigate(..) पर कॉल करना बेहतर विकल्प है। देखें http://backbonejs.org/#Router-navigate

+0

आपके त्वरित उत्तर के लिए धन्यवाद। मैं router.navigate() का उपयोग कर रहा था लेकिन ट्रिगर चूक गया: दस्तावेज में सही चर। एक बार फिर धन्यवाद! – Matt

संबंधित मुद्दे