1

我在这里使用https://docs.angularjs.org/tutorial/step_07https://docs.angularjs.org/tutorial/step_08中的示例进行演示。我们有以下路线:

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 not found”页面。例如,在实际情况下,当我们去链接“/phones/:phoneId”但没有匹配的phoneId时,会返回如下所示的json。

{phoneIdMatch: false}

ng-route 中基于 ajax 数据重定向到页面的传统方式或最佳方式是什么?

4

1 回答 1

1

如果要求一个不存在的电话,一个好的 RESTful 后端会响应 404 响应。

要处理该响应,您只需在 $http 承诺中添加一个错误回调:

$http.get('phones/' + $routeParams.phoneId + '.json').then(function(response) {
  $scope.phone = response.data;
}).catch(function(response) {
    // do what you want here
});

如果你想要的是去一个特定的路线,比如 '/404',你可以使用 $location 服务:

.catch(function(response) {
    if (response.status === 404) {
        $location.url('/404');
    }
});
于 2015-07-03T20:48:40.937 回答