2015-02-16 1 views
0

В angularjs можно обрабатывать & solve 404 Views?Angularjs разрешить 404 просмотров

Я хочу добиться условного рендеринга вид в зависимости от моего клиента, у меня есть вид что-то вроде этого:

<div ng-include="'assets/stackoverflow/breadcrumb.html'"></div>

так, если предположим, что выше возвращает 404, он должен попробовать это:

<div ng-include="'assets/default/breadcrumb.html'"></div>

Этот подход может быть неправильным, но мне просто нужен способ обработки представлений 404, у меня есть перехватчик, который на самом деле ловит 404 запросов, но как его разрешить и отправить снова?

app.factory('RequestResponseInterceptor', ['$q', '$rootScope', '$location', 
    function($q, $rootScope, $location) { 

     var loadingCount = 0; 
     return { 
      responseError: function(response) { 

       if (response.status === 404) { 
        //Change URL and request again 
       } 
       return $q.reject(response); 
      } 
     }; 
    } 
]); 
+0

http://stackoverflow.com/questions/20836374/how-to-catch-angular-ng-include-error –

+0

Вышеупомянутая ссылка s hows, как я могу поймать ошибку (404), но если это произойдет, как я могу повторно отправить новый URL? –

ответ

-1

Вы должны использовать маршрутизацию.

Настройка ваше приложение как

.config([ '$routeProvider', function($routeProvider) { 
$routeProvider.when('/', { 
    templateUrl : 'assets/stackoverflow/breadcrumb.html', 
    controller : 'ctrl1' 
}).when('/s404', { 
    templateUrl : 'assets/default/breadcrumb.html', 
    controller : 'ctrl2' 
}).otherwise({ 
    redirectTo : '/' 
}); 

Заменить нг-включить с нг-зрения:

<ng-view></ng-view> 

Установите путь местоположения в перехватчика (и не забудьте придать $ местоположение):

if (response.status === 404) { 
    $location.path("/s404"); 
}