2014-03-13 57 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' 
}) 

我太面同樣的問題,在部分解決問題之前添加斜線前綴。