我正在使用angularjs并使用下面的代码
$routeProvider
.when('/Home', {
templateUrl: 'views/home.html',
controller: 'HomeCtrl'
})
.when('/login', {
templateUrl: 'views/login.html',
controller: 'LoginCtrl',
.otherwise({
redirectTo: '/About'
})
在这里,我该如何设置条件 如果文件“help.html”存在于项目部署文件夹(如D:\ project \ Code \ help.cshtml)上,那么页面应该重定向,或者我们可以说它应该打开帮助页面“help.cshtml。
如果没有,那么我的正常路线应该有效。 请建议最佳方法。
答案 0 :(得分:1)
您可以通过收听$routeChangeError
事件拦截路线错误。
var app = angular.module('myApp', ['ngRoute']);
app.config(function ($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'home.html',
}).when('/profile', {
templateUrl: 'profile.html'
}).when('/help', {
// The help.html does not exist
templateUrl: 'help.html',
// Set a custom property we'll use to redirect to if needed
redirectOnError: '/help-not-found'
}).when('/help-not-found', {
templateUrl: 'help-not-found.html'
}).otherwise({
redirectTo: '/'
});
});
app.controller('MainCtrl', function($scope, $location) {
// Listen for route errors
$scope.$on('$routeChangeError', function(event, current) {
// And if the route contains our custom property ...
if(current.$$route.redirectOnError) {
console.log('Redirecting to ' + current.$$route.redirectOnError);
// Redirect to that route
$location.path(current.$$route.redirectOnError);
}
});
});
在此plunker中查看此操作。