出于示例目的,我在下面有一个相当简单的controller
+ router
。我的问题是:如果我修改了某个模型,我如何处理路由器和Backbone.history
?
我们说我点了route
r和controller
。默认路由""
将我带到函数blue
,我将背景设置为蓝色。我可以点击一个按钮,它会将我带到功能red
,在该功能中,背景为红色,网址为/#red
。
如果我点击后退按钮,我将返回我的""
网址,但背景会保持红色。有没有办法获得以前的状态,而不仅仅是在处理历史记录时更改URL?
我理解在函数blue
中,我可以将背景设置为蓝色而不是this.model.get("background)
,但我要求在更复杂的情况下,如何获得先前的状态{{ 1}}通过this.model
。
Backbone.history
答案 0 :(得分:1)
MyApp.router.navigate("red");
- 只会更改网址,但实际上并未触发您的控制器方法被触发。您可能很想设置{trigger:true}
选项,但avoid that。
只需为该路线调用控制器方法即可。我的回答中有一个非常相似的工作示例设置:How can I show and hide regions in Marionette.js?
事实是你的代码示例中有几件事搞砸了。比如,你不应该在你的控制器中设置点击手柄,这是一个观看者的工作。控制器应该只做最抽象的工作,比如清理和渲染视图。应在视图中处理实际的用户交互。