2012-05-10 12 views
5

私は最初のバックボーンプロジェクトを抱えていて、ボタン要素をクリックした後にURLを更新しようとしています。バックボーン - ビュー機能からURLを更新する

私は手動でwindow.location.hashでURLを設定できますが、これは正しい方法ではないと思います。 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(); 

ありがとうございます!

+0

他の誰かがこれに遭遇した場合、解決策はpropertiesRouter.navigate( "/ '+ orgID +'/'+ projectID +'"、{trigger:true}); – Matt

答えて

8

あなたは間違いなくwindow.location.hashに電話をかけることができますが、これにより、バックボーンの一部があなたのために作成しようとしているものが破損します。より良い選択はrouter.navigate(..)に電話することです。 http://backbonejs.org/#Router-navigate

+0

ご返信ありがとうございます。私はrouter.navigate()を使用していましたが、トリガを逃しました:ドキュメントの真の変数です。再度、感謝します! – Matt

関連する問題