Backbone.js 如何像以前一样在chaplin.js中的URL上使用哈希(#)呢?
假设我在一个chaplin.js站点上有两个“页面”(端点) 路线:Backbone.js 如何像以前一样在chaplin.js中的URL上使用哈希(#)呢?,backbone.js,chaplinjs,Backbone.js,Chaplinjs,假设我在一个chaplin.js站点上有两个“页面”(端点) 路线: match('', 'first_controller#show'); match('second_view', 'second_controller#show'); <a href="{{#url "first_controller#show" }}{{/url}}">Go to home</a> <a href="{{#url "second_controller#show" }}{{/ur
match('', 'first_controller#show');
match('second_view', 'second_controller#show');
<a href="{{#url "first_controller#show" }}{{/url}}">Go to home</a>
<a href="{{#url "second_controller#show" }}{{/url}}">Go to Second</a>
和两个链接:
match('', 'first_controller#show');
match('second_view', 'second_controller#show');
<a href="{{#url "first_controller#show" }}{{/url}}">Go to home</a>
<a href="{{#url "second_controller#show" }}{{/url}}">Go to Second</a>
(请注意,我不在站点的根目录上)。当我在“主页”启动应用程序,然后单击“转到第二个”链接时,我被正确重定向到第二个视图,所有内容都被正确提交,浏览器上的url更改为mysite.com/something/second\u view
但是我无法刷新导航器,因为我的Web服务器将尝试访问第二个视图
文件夹,而我将获得404
我需要的是始终使用
在主干中生成URL,类似于mysite.com/something/#/second\u视图
顺便说一句:最后一个链接有效,但卓别林删除了#
(就像重定向一样)
也许我需要配置一些东西?或者在ùrl'helper上更改一些内容,我在文档中找不到任何内容。有什么想法吗
Thxs本身就允许通过
Backbone.history.start({pushState: false})
(默认设置)
你可以看到这张照片。
您只需将此选项对象作为第二个参数传递给应用程序中的initRouter
:
this.initRouter(routes, {pushState: false});
主干网本身允许这种开箱即用的功能,通过
Backbone.history.start({pushState: false})
(默认设置)
你可以看到这张照片。
您只需将此选项对象作为第二个参数传递给应用程序中的initRouter
:
this.initRouter(routes, {pushState: false});
顺便说一句,这叫做散列。你不能只使用一个下降槽?@user1737909不确定你所说的“下降槽”是什么意思:接受任何你不认识的url,只是为了让它进入你的索引。。。不能这样做:P。我真的需要url中的哈希。必须有一种方法来配置卓别林来实现这一点,顺便说一句,这叫做散列。你不能只使用一个下降槽?@user1737909不确定你所说的“下降槽”是什么意思:接受任何你不认识的url,只是为了让它进入你的索引。。。不能这样做:P。我真的需要url中的哈希。必须有一种方法来配置卓别林来做到这一点,你是说initRouter()上的“pushState”吗?
?initRouter上的pushState让我更接近。。。现在我不会在浏览器上重定向,但是使用url
helper生成的链接不会使用散列。。我需要创建另一个助手吗?啊,可能需要。我认为您应该提交一个问题,并使用{root:'/#!'}
来now@pleasedontbelong,卓别林方面的期望是,对于不支持HTML5历史API(pushState
)的浏览器来说,哈希主要是一种后备方法。服务器也应该能够处理路由。您是否从纯静态文件服务器托管卓别林应用程序?@knuton实际上它不是静态文件服务器,所以我最终使用了pushState并将所有内容(服务器端)重定向到卓别林应用程序的根目录。。我在将pushState设置为False时遇到了一些问题,我必须很快完成:Pdid u在initRouter()上表示“pushState”
?initRouter上的pushState让我更接近。。。现在我不会在浏览器上重定向,但是使用url
helper生成的链接不会使用散列。。我需要创建另一个助手吗?啊,可能需要。我认为您应该提交一个问题,并使用{root:'/#!'}
来now@pleasedontbelong,卓别林方面的期望是,对于不支持HTML5历史API(pushState
)的浏览器来说,哈希主要是一种后备方法。服务器也应该能够处理路由。您是否从纯静态文件服务器托管卓别林应用程序?@knuton实际上它不是静态文件服务器,所以我最终使用了pushState并将所有内容(服务器端)重定向到卓别林应用程序的根目录。。我在将pushState设置为False时遇到了一些问题,我必须很快完成这项工作:P