我的路线看起来像这样且 有效 :
when('/videos', {
templateUrl: 'partials/partial1',
controller: 'MyCtrl1'
}).
但是,如果我将命名组添加到when:
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 :(得分:0)
我的印象是你只能使用路由名称,而不能使用模板名称。每当您使用:
指定路由参数时,它都会存储在$routeParams
;但是,我不认为有与模板名称一起使用的类似服务。如果是这样,错误就有意义了。
请记住,路径路径是URL中看到的向外路径。您不会以这种方式看到模板名称;这段代码的重点是连接它们。可能有一种方法可以重新构建您的应用程序,以便您可以执行您想要的操作,但每条路径只有一个部分,因为我认为这是最佳做法。
答案 1 :(得分:0)
您可能会收到该错误,因为您的服务器正在响应404或其他意外响应。根据{{3}},您甚至无法使用:
为templateUrl指定路由参数,但您可以使用函数
templateUrl - {string = | function()=} - 返回a的路径或函数 应该由ngView使用的html模板的路径。
如果templateUrl是一个函数,将使用以下函数调用它 参数:
{Array。&lt; Object&gt;} - 从当前提取的路由参数 $ location.path()通过应用当前路线
所以你可以做到
var partial1UrlBuilder = function(routeParams) {
return 'partials/partial1/' + routeParams.id;
};
...
when('/view1', {
templateUrl: partial1UrlBuilder,
controller: 'MyCtrl1'
}).
答案 2 :(得分:0)
when('/videos/:video_id', {
templateUrl: '/partials/partial1',
controller: 'MyCtrl1'
})
我也面临同样的问题,在部分解决问题之前为斜线添加前缀。