2014-03-13 55 views
0

我有一个看起来像这和的路线的路线工作AngularJS与斜线失败

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

但是,如果我添加了一个名为组的时候:

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

不行当我尝试在浏览器中访问videos/1

我收到了一堆在控制台中的错误,沿着线:

Uncaught SyntaxError: Unexpected token < 

什么奇怪的是,我还可以得到,说

Resource interpreted as Stylesheet but transferred with MIME type text/html: 

错误和控制台说,这是

video_id:13 

好像video_id被解释为一个文件:从命名的文件来它自己的?

回答

0

我的印象是,你只能与路线名称为此下,而不是与模板的名称。每当你使用:指定路由参数,它被保存在$routeParams;但是,我不认为有类似的服务用于模板名称。如果是这样,错误是有道理的。

记住的路由路径是在URL中看到的面朝外的路径。你不会以这种方式看到模板名称;这段代码的重点是连接它们。可能有一种方法可以重新构建应用程序,以便您可以按自己的需要进行操作,但每条路线只能有一个部分,因为我认为这是最佳做法。

+0

啊我的坏我输错that..the斜线应该属于'when'部分。 – Snowman

+0

好的,所以你没有尝试使用:在模板的网址? – sighrobot

+0

我不认为你的路线URL中可以有斜线。我正在查看我的一个项目,并且没有任何路由以'/'结尾。 – sighrobot

0

你可能会收到这个错误,因为你的服务器与404或其他一些意外的响应响应。按照$routeProvider documentation你甚至不能使用:来指定templateUrl路由参数,但你可以使用函数

templateUrl – {string=|function()=} – path or function that returns a path to an html template that should be used by ngView.

If templateUrl is a function, it will be called with the following parameters:

{Array.<Object>} - route parameters extracted from the current $location.path() by applying the current route

,那么你可以做

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

... 

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

对不起,我最初输入错误。尾部的斜线应该属于'when'而不是templateUrl。我编辑了这个问题。 – Snowman

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

我太面同样的问题,在部分解决问题之前添加斜线前缀。