如何更改URL而不更改主干中的页面

时间:2014-08-20 00:58:41

标签: javascript backbone.js marionette

我有一个模式,它有自己的路线,我有一个事件监听器,在关闭后改变它的路线

    'closeTask' : function ( e ) {
        e.preventDefault();
        Backbone.history.navigate( '#groups/' + this.model.get( 'LicenseId' ) + '/tasks' );
    },

但是当我使用它时,有时关闭模态会重新加载页面。

我也尝试过使用

    'closeTask' : function ( e ) {
        e.preventDefault();
        App.navigate( '#groups/' + this.model.get( 'LicenseId' ) + '/tasks', { trigger:false } );
    },

但也给了我相同的结果。我应该使用什么才能在不重新加载页面的情况下更改路线?

2 个答案:

答案 0 :(得分:2)

这应修改URL而不触发路由。

Backbone.history.navigate('#groups/' + this.model.get( 'LicenseId' ) + '/tasks', false);

false添加为Backbone.history.navigate的第二个参数。

http://backbonejs.org/#Router-navigate

答案 1 :(得分:2)

不知何故,使用replace : true解决了我的问题。

Backbone.history.navigate('#groups/' + this.model.get( 'LicenseId' ) + '/tasks', { replace : true } );

阅读那里的文档,这实际上很有意义

  

要更新URL而不在浏览器的历史记录中创建条目,   将replace选项设置为true。