Возможно, вы используете otherwise
.
angular.module('MyApp', [])
.config(function($routeProvider) {
$routeProvider.
when('/', {templateUrl:'/home.html'}).
// add as many as you want here...
otherwise({templateUrl:'/404.html'}); // Render 404 view
});
Update: После прочтения более внимательно вопрос OP (к сожалению, довольно рано здесь), я думаю у меня есть альтернативное решение (на самом деле два):
1) $scope
переменное основной пользовательский интерфейс вашего ng-view
, которая скрывает содержимое
Это требует ng-show
в вашей точке зрения и resolve
в ваших Params, то сделайте $emit
на других контроллерах для того, чтобы сказать: «Эй, этот парень ударил 404, не отображать вид»
$routeProvider.otherwise({
controller: 'masterController',
resolve: {
404: function(){
return true;
};
});
angular.module('MyApp', [])
.controller('masterController', function($scope, 404) {
$scope.isOn404 = 404
...
})
// In the view
<div ng-controller="masterController">
<div ng-hide="isOn404">
<!-- Actual content -->
</div>
<div ng-show="isOn404">
<!-- 404 Page -->
</div>
</div>
Теперь, это требует, чтобы у вас есть главный контроллер, который помогает вам управлять остальное вашего пользовательского интерфейса. Кроме того, вам, скорее всего, понадобится сделать некоторое кодирование для обработки остальной части страницы, а не просто использовать ng-view
(например, некоторые контроллеры, отображающие текущий заголовок, тело и т. Д.).
2) Пользовательская система маршрутизации
Я на самом деле сделал это для конкретного проекта: у вас есть сервис, который устанавливает «BackURL» и «FordwardURL»; каждый $onRouteChange
вы храните, куда вы идете и откуда вы пришли; если пользователь вот-вот достигнет 404, вы все равно можете сделать его в моем исходном примере, но когда пользователь ударит назад, поймайте его через AngularJS и отобразите фактическую страницу «Назад». В этом случае я использую библиотеку, которая помогает мне с маршрутизацией на мобильных устройствах, называемой Lungo, и библиотекой, которую я использую для использования, L.A.B (Lungo Angular Bridge).
Не значит 'в противном случае ({templateUrl: '/404.html'}) '? Речь идет о _not_ перенаправлении! –
Woop, вы правы, позвольте мне исправить это. – jjperezaguinaga
это перенаправление, мой друг :) – nXqd