2015-07-03 99 views
1

我在這裏使用https://docs.angularjs.org/tutorial/step_07https://docs.angularjs.org/tutorial/step_08的示例進行演示。我們有以下路由:Angularjs ngRoute根據ajax數據重定向到「未找到」頁面

phonecatApp.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider. 
     when('/phones', { 
     templateUrl: 'partials/phone-list.html', 
     controller: 'PhoneListCtrl' 
     }). 
     when('/phones/:phoneId', { 
     templateUrl: 'partials/phone-detail.html', 
     controller: 'PhoneDetailCtrl' 
     }). 
     otherwise({ 
     redirectTo: '/phones' 
     }); 
    }]); 

當我們去鏈接/phones/abcdefg,沒有JSON文件匹配查詢並顯示一個空的模板。在這種情況下,我們應該重定向到「404未找到」頁面。例如,在實際情況下,當我們去鏈接「/ phones /:phoneId」而沒有匹配的phoneId時,像下面這樣的json會回來。

{phoneIdMatch: false} 

什麼是傳統方式或NG路由重定向到基於Ajax的數據一頁的最佳方式?

回答

1

如果要求一個不存在的電話,一個好的RESTful後端將響應一個404響應。

爲了解決這個問題的反應,你只需添加一個錯誤回調到$ HTTP承諾:

​​

如果你想要的是去一個像「/ 404」特定的路線,你可以使用$位置服務:

.catch(function(response) { 
    if (response.status === 404) { 
     $location.url('/404'); 
    } 
}); 
+0

.success()和.error()已過時,使用。那麼()和.catch(),而不是 – Sergii

+0

@Sergii它已經完成。 –