使用Backbone.history时如何处理修改后的模型

时间:2015-10-27 16:06:08

标签: javascript backbone.js marionette

出于示例目的,我在下面有一个相当简单的controller + router。我的问题是:如果我修改了某个模型,我如何处理路由器和Backbone.history

我们说我点了route r和controller。默认路由""将我带到函数blue,我将背景设置为蓝色。我可以点击一个按钮,它会将我带到功能red,在该功能中,背景为红色,网址为/#red

如果我点击后退按钮,我将返回我的""网址,但背景会保持红色。有没有办法获得以前的状态,而不仅仅是在处理历史记录时更改URL?

我理解在函数blue中,我可以将背景设置为蓝色而不是this.model.get("background),但我要求在更复杂的情况下,如何获得先前的状态{{ 1}}通过this.model

Backbone.history

1 个答案:

答案 0 :(得分:1)

MyApp.router.navigate("red"); - 只会更改网址,但实际上并未触发您的控制器方法被触发。您可能很想设置{trigger:true}选项,但avoid that

只需为该路线调用控制器方法即可。我的回答中有一个非常相似的工作示例设置:How can I show and hide regions in Marionette.js?

事实是你的代码示例中有几件事搞砸了。比如,你不应该在你的控制器中设置点击手柄,这是一个观看者的工作。控制器应该只做最抽象的工作,比如清理和渲染视图。应在视图中处理实际的用户交互。