我正在使用Backbone和Marionette,我有一个麻烦的路线似乎是两次射击,路线参数不同。单击后退时,它会返回到路径的第一次触发,而不是原始页面。使用Backbone Debugger,我可以看到我有6个不同的路由器,其中只有一个(突出显示)具有适用的路由。所以只有一个例子。
路由由普通旧链接触发。我没有使用navigate()。这是HTML的实际链接:
<a href="#device/3/hash/84855d0624dbeb7957cad7d09f7faca78166f033ab71e53aa6199f285d6d903f/incident/8IFVA" class="btn btn-actions action-details">
<span></span> App
</a>
当我点击该链接时,您可以看到使用两个不同签名触发的路线:
我觉得我可能误解了Backbone路由的工作原理,为什么我的路由定义与incidentId匹配和不匹配。这是有趣的事情。如果我接受该链接并将其粘贴到浏览器中,则该路由仅触发一次。
答案 0 :(得分:2)
通常,当路线或事件多次触发时,通常意味着在您来回导航时未正确处理视图。
由于您确定自己没有进行任何手写导航,因此似乎就是这种情况,尤其是当您手动访问URL时只看到此触发器一次。
如果没有看到您的路由器或视图代码,很难真正为您提供可靠的解决方案。我会开始在特定的路由处理程序上放置断点,并检查它被触发的位置的调用堆栈。