2012-09-04 46 views
0

我应该使用路由器来管理视图的变化吗?目前,我正在使用'父'视图来处理'子'视图管理。如何管理更改视图?

我在一位父母中有多个“孩子”视图。子视图/页面通过单击链接进行更改,这也会修改URL。显示视图的更改由父视图处理 - 不是路由器。有问题的路由器没有任何价值编码,我创建了'虚拟'路由器,所以我可以使用Backbone.history

+0

所以,这里有一个问题:如果网址被更改了,有人可以将该网址复制/粘贴到另一个浏览器窗口,并基本上进入与点击/导航到该网址时相同的状态? – JayC

+0

@JayC:是的,如果URL被更改了,有人可以复制/粘贴该URL到另一个浏览器窗口,并获得与原始浏览器在您点击/导航到该URL时所处的状态基本相同的状态。 – Ari

回答

0

我想你正在寻找某种验证方式,这是构建你的应用程序的正确方法。根据您提供的有限信息,很难说,即使您确实提供了一些代码,您的问题也可能不是明确的答案。

所以,让我这么说吧。我认为创建由其他视图组成的Backbone.js视图并不存在任何缺陷。我想认为如果你把所有与查看路由器相关的视图都改变了,就会出现问题 - 除非你在那里提供某种高级描述 - 比如传递视图,父视图应该显示/附加事件给/别的东西。

另一点。孩子的观点如何相关?他们中的一些人可能有一个共同的(高级别)界面?或者你的父视图是否包含不同的东西,比如搜索表单和一些网格和标签?或两者?有没有可能这个父视图可能对另一个页面有用,还是只是要管理这些特定的页面视图等等。所有这一切都很重要。

我想甚至有理由怀疑你的父视图是否应该严格从Backbone.View延伸或应该有其他类型的“基础”类。但如果它起作用并且与作为“观点”有一些合理的联系,我就不会问这个问题。正如杰夫·阿特伍德所说,“元是谋杀”。在某些时候这种讨论变得不切实际,并且在仍然有重要问题需要修正或实施的时候,最好留下合理的解决方案。

我的想法是如果你使用路由器来控制和委托的东西到父视图,并让父视图做它的事情与它的子视图,你可能没事。

不过,您可能需要考虑通过路由器中父视图的构造函数传递子视图。让一个单独的事物决定一个对象的组成比让对象创建它自己的组合更好,但并不总是更好。但总是要求透明度。有时,用依赖注入获得的自由不值得抽象你的代码;特别是如果你不确定你在做什么。弄清楚你在做什么,然后考虑你可能没有想到的抽象。

如果你想知道你是否在做与社区做某些事情相一致的事情,你可能应该去backbone.js Google discussion group并回顾或提问那里的问题。

+0

你是对的我正在寻找我的方法验证或更正。 Rails路由器,而不是Backbone路由器,委托给“父”视图,然后管理所有“子”视图状态和变化。骨干路由器基本上是空的;它存在,所以我可以使用'Backbone.history'。我将听取您的建议,并重新提出这个问题谷歌讨论组的主题。谢谢。 – Ari