Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何像以前一样在chaplin.js中的URL上使用哈希(#)呢?_Backbone.js_Chaplinjs - Fatal编程技术网

Backbone.js 如何像以前一样在chaplin.js中的URL上使用哈希(#)呢?

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

假设我在一个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" }}{{/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