backbone.js管理主要详细信息视图和历史记录

时间:2012-02-14 15:24:59

标签: routing backbone.js history master-detail

我们有一个Backbone.js应用程序是很正常的,你点击一个菜单项,你得到一个项目网格,你点击网格中的项目,网格隐藏,你看到表格,你节省或取消表格,表格将被销毁,网格显示并更新。

虽然它稍微复杂一些,但是应用程序的不同部分可以从特定的表单中获取,有时你有一个网格 - >形式 - >另一种形式,你需要回到第一个表格,然后回到网格。它不是一个真正的向导,它只是一些复杂的形式,我真的不想在视图中硬编码“根视图”或面包屑。

所以我的问题是我无法弄清楚如何将它与Backbone路由器集成。我只使用ajax调用,但我们需要后退按钮功能。我正在看的是拥有状态对象或模型,其上有一堆视图,当您单击取消时,它会破坏表单并弹出上一个视图。

然而,这不允许书签,因为您必须通过导航应用程序来构建堆栈,如果他们没有单击取消(这会破坏视图并弹出堆栈),但点击返回然后您的在中间视图上,但第三个视图仍在堆栈中。

我想做的是有一个URL(我在后端使用MVC,所以使用controller / action / id url会很好)#usergrid / list then#usergrid / list / user / addupdate / 3然后#usergrid / list / user / addupdate / 3 / someothercontroller / someotheraction / 4

但是a)我无法弄清楚如何让路由器适应这个和b)我将不得不解析args,这将是困难的,在网址之间的某种划分和c)唯一的方式我可以认为,使用路由来基本上指定每个URL的每个可能的变体。

任何对此的经验或见解都会非常感激。

1 个答案:

答案 0 :(得分:0)

我偶然发现了同样的问题。找不到正则表达式路线 (令人惊讶的是,Backbone支持)。也就是说,而不是routes: { 'some-form': '/showThatForm' }使用routes: { new RegExp("(.+?)/some-form$"): 'showThatForm' }或类似的东西。

此外,centralized event dispatcher在这个方案中证明是有用的。

也许,这不是最好的解决方案 - 但它对我来说效果很好。