带有尾随斜杠的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'
})