2013-12-09 48 views
-1

对不起,我想不出一个好的标题。精确掌控历史在骨干中的推动

我想有默认的pushstate行为,但在某些情况下有自定义行为。 所以我希望所有的链接都是正常/登录,/注册等。如果用户在主页上,我希望这些链接通过主干进入各自的页面。但是,如果用户是一个像/ product/123这样的特殊页面,那么我们将向他们展示一个模式,虽然href表示“/ login”,但我想简单地调用路由函数来显示登录页面,将#login附加到url(即“/ product/123#login”)并添加带有hash-tag'd url的推送状态。

这个背后的原因是,有人可能在/ product/123上,点击/登录,突然决定他们想分享产品并获得产品网址,然后退出习惯,返回查看产品[即。关闭登录模式],并按预期工作。

以上可能吗?从我一直在读的内容来看,backbone的历史模块是一个集合,并且忘记了它的一些东西,而且我无法通过Backbone文档看到一条路。

回答

0

这可能不是一个好主意,让你的模态在一条路线。对于大多数用途来说,模式窗口是当前页面上的弹出窗口,它不是实际的视图更改,而是视图附加到用户正在做的任何位置的顶部(从用户不能继续他在做的事情,直到他处理出现的任何事情)。

在这方面,/登录路线可能不应该是一个模态,而是一个完整的页面视图与登录表单。然后在你的其他页面上,我假设你有一个布局视图,其中包含一个呈现“登录模式”按钮的子视图,对吧?当点击这个按钮时,你可以处理模态渲染/附加到正文(或者是)。

在这种情况下,不需要URL更改,所以Backbone路由器不会涉及。我的观点是,您所描述的用例只有在共享一个URL(/ product/123#login)时才有意义,它将在产品/ 123页面上重新打开登录模式(而不是其他产品)...我认为这不是一个非常有用的功能!在我看来(这是非常有争议的,我确定),登录模式并不是应该有一个特定的路由,因为它不是一个实际的稳定的应用程序路径,如果这是有道理的。

+0

这是有道理的,但是如果您点击“登录”,然后点击返回,您决定不想登录。 在正常情况下,您最终将远离您所在的产品页面,因为没有弹出登录页面的历史记录。 其实,我认为最好的方法是简单地路由到/登录,同时显示模式。用户可以返回或关闭模式以获取链接。 –