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
Javascript 主干路由器根目录在url中重复_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干路由器根目录在url中重复

Javascript 主干路由器根目录在url中重复,javascript,backbone.js,Javascript,Backbone.js,我刚刚开发完我的第一个主干应用程序,我发现路由器有一个小毛病,我似乎无法修复 我的路线如下所示: routes: { '': 'index', 'jobs/:id': 'viewJob', '*default': 'notFound' } Backbone.history.start({ pushState: true, root: '/subdir/' }); 当从服务器根目录提供应用程序时,它可以正常工作,但当我从子文件夹提供应用程序时,它不能正常工作。在这种情况下,我总是得

我刚刚开发完我的第一个主干应用程序,我发现路由器有一个小毛病,我似乎无法修复

我的路线如下所示:

routes: {
  '': 'index',
  'jobs/:id': 'viewJob',
  '*default': 'notFound'
}
Backbone.history.start({ pushState: true, root: '/subdir/' });
当从服务器根目录提供应用程序时,它可以正常工作,但当我从子文件夹提供应用程序时,它不能正常工作。在这种情况下,我总是得到默认路线

我认为将根参数添加到主干历史记录中就可以了,所以我添加了如下内容:

routes: {
  '': 'index',
  'jobs/:id': 'viewJob',
  '*default': 'notFound'
}
Backbone.history.start({ pushState: true, root: '/subdir/' });
有了这个,应用程序似乎按预期加载,但路由器会自动将根添加到所有路由,并最终被复制,因此当我第一次访问网站时:

http://mysite.com/subdir/
它加载应用程序并将其更改为:

http://mysite.com/subdir/subdir/
这会使应用程序在重新加载页面或使用浏览器后退按钮时中断,因为该路径实际上并不存在

如何避免这种情况?我不想硬编码路由中的文件夹名称,因为它可能会更改或从根目录提供服务


更新:我刚刚意识到我自己正在使用路由器添加重复的文件夹名称。请在代码中的某个位置导航。我刚把它取下来,一切正常。

只是一个小小的猜测。。你真的想打开pushState吗?如果服务器未设置为在新目录之外提供服务,这可能会导致重新加载时出现问题。

只是一个小小的猜测。。你真的想打开pushState吗?如果服务器未设置为在新目录之外提供服务,这可能会导致重新加载时出现问题。

我遇到了相同的问题,它仍然重复文件夹名称,但它使用了哈希标记。我遇到了相同的问题,它仍然重复文件夹名称,但它使用了哈希标记。您可以(通过回调)共享您的确切代码吗? 我刚刚在一个子文件夹中创建了一个路由器,它工作得很好。当“当我从子文件夹提供服务时,它不工作”时,问题是什么?问题在我代码的其他地方,我调用了router.navigate(“/subdir/”),它被添加到url中,使子目录名重复。删除该子目录名后,该技巧现在就可以使用了。您可以(与回调)共享您的确切代码吗?我刚刚在一个子文件夹中创建了一个路由器,它工作得很好。当“当我从一个子文件夹提供服务时,它不工作”时,问题是什么?问题在我代码的其他地方,我调用了router.navigate(“/subdir/”),它被添加到url,使子文件夹名称重复。删除它使这个技巧现在可以工作了。