5

我在我的第一个主干项目中磕磕绊绊,并试图在单击按钮元素后更新 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();

谢谢!

4

1 回答 1

8

你当然可以打电话window.location.hash,但这确实打破了一些主干试图为你创造的分离。更好的选择是调用router.navigate(..). 请参阅http://backbonejs.org/#Router-navigate

于 2012-05-10T16:41:04.197 回答