带有尾随斜杠的AngularJS路由失败

带有尾随斜杠的AngularJS路由失败,angularjs,Angularjs,我有一条路线,看起来像这样,有效: when('/videos', { templateUrl: 'partials/partial1', controller: 'MyCtrl1' }). 但是,如果我将命名组添加到 when('/videos/:video_id', { templateUrl: 'partials/partial1', controller: 'MyCtrl1' }). 当我试图在浏览器中访问视频/1时,它不起作用 我在控制台中发现了一系列错误,大致如下

我有一条路线,看起来像这样,有效

when('/videos', {
  templateUrl: 'partials/partial1',
  controller: 'MyCtrl1'
}).
但是,如果我将命名组添加到

when('/videos/:video_id', {
  templateUrl: 'partials/partial1',
  controller: 'MyCtrl1'
}).
当我试图在浏览器中访问
视频/1
时,它不起作用

我在控制台中发现了一系列错误,大致如下:

Uncaught SyntaxError: Unexpected token < 
控制台显示来自一个名为:

video_id:13

似乎
video\u id
被解释为它自己的文件?

我的印象是,您只能使用路由名称,而不能使用模板名称。无论何时使用
指定路由参数,它都会存储在
$routeParams
中;但是,我认为没有类似的服务用于模板名称。如果是这样的话,错误是有意义的


请记住,路由路径是在URL中看到的向外的路径。您将不会以这种方式看到模板名称;这段代码的要点是连接它们。可能有一种方法可以重新构造应用程序,使您可以做您想做的事情,但每个路由也只有一个部分,我认为这是最佳做法。

您可能会遇到该错误,因为您的服务器正在以404或其他意外响应进行响应。根据,您甚至不能使用
为templateUrl指定路由参数,但可以使用函数

templateUrl–{string=| function()=}–返回 ngView应该使用的html模板的路径

如果templateUrl是一个函数,则将使用以下命令调用它 参数:

{Array.}-从当前 $location.path()通过应用当前路由

那么你可以做什么

var partial1UrlBuilder = function(routeParams) {
  return 'partials/partial1/' + routeParams.id;
};

...

when('/view1', {
  templateUrl: partial1UrlBuilder,
  controller: 'MyCtrl1'
}).

我也遇到了同样的问题,在部分解决问题之前先加上斜杠。

啊,我的错,我打错了。

后面的斜杠应该属于
部分。好的,所以你不想在模板URL中使用:?我认为你的路由URL中不能有后面的斜杠。我正在查看我的一个项目,没有一条路线以
/
结尾。是的,我认为问题在于尾部斜杠。但是我不明白这个问题-你说你想使用一个路由参数,但为什么不使用?你是否指定了一个
或者
?通常,当您尝试加载不存在的路由时,您将被重定向到
/
或任何指定为默认路径的路径。也就是说,
uncaughtsyntaxerror:uncontractedtoken对不起,我最初输入错误。尾随斜杠应属于
when
而不是templateUrl。我已经编辑了这个问题。
var partial1UrlBuilder = function(routeParams) {
  return 'partials/partial1/' + routeParams.id;
};

...

when('/view1', {
  templateUrl: partial1UrlBuilder,
  controller: 'MyCtrl1'
}).
when('/videos/:video_id', {
  templateUrl: '/partials/partial1',
  controller: 'MyCtrl1'
})