【问题标题】:Marionette query string change triggers route eventMarionette 查询字符串更改触发路由事件
【发布时间】:2015-04-17 09:57:55
【问题描述】:

如果我向查询字符串添加新参数,然后路由更改事件被触发,我不希望这种情况发生,我该如何解决这个问题?

例如我有路由'/#register',如果我添加像'name = abc'这样的新参数,那么路由会变成'/#register?name=abc',这很好,但它也会触发路由更改事件。

请注意,我使用的是 window.location.hash 来添加查询字符串参数。

谢谢, 马士基

【问题讨论】:

  • 看一点代码会有所帮助。你在寻找新的路线做什么?更新您的模型?渲染一组不同的视图?

标签: backbone.js marionette


【解决方案1】:

为什么不使用主干路由器的navigate 方法。

router.navigate('/#register?name=abc') 

navigate 方法采用第二个参数,即选项哈希。其中一个选项是trigger,您可以使用它触发路线更改。

如果不传递{ trigger: true },您的 url 将被更新而不会触发您的路由器回调。

【讨论】:

    【解决方案2】:

    在不触发路由的情况下更改 URL 并添加历史条目:

    Backbone.history.navigate('/#register?name=abc')
    

    在不添加历史记录且不触发路由的情况下更改 URL:

    Backbone.history.navigate('/#register?name=abc', { replace: true })
    

    这对于在不向用户的后退按钮历史添加步骤的情况下提供可收藏的 URL 很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2015-04-12
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      相关资源
      最近更新 更多