我有下面的角函数。
功能:
var App = angular.module('app', ['ui.bootstrap', 'ngRoute', 'ngAnimate']); App.config(['$routeProvider', function($routeProvider) { $routeProvider .when('/', { templateUrl: 'views/dashboard.html' }) .when('/:pages', { templateUrl: function(routeParams) { return 'views/' + routeParams.pages + '.html'; } }) .otherwise({redirectTo: '404.html'}) }]);
我有一个侧栏导航控件。我已经创建了4页。
因此,当我单击这些导航项时,相应的页面将正确打开。
还有一些我还没有创建的页面。但根据下面的函数。
当我没有不存在的东西时,它必须返回到404。存在于文件夹根目录中的html
文件。
发生的事情是,我在控制台中没有收到错误,地址栏中的url反映了上次单击的有效页面。
有人让我知道我在哪里犯了错误,这种方法对于动态路由是否正确?
reDirectTo更新$位置,因此不必指定. html,而是指定routeParameter。
你最好这样做:
[...]
.when('/error', { templateUrl: '404.html' })
.otherwise({redirectTo: '/error'});
否则将在没有其他定义匹配时调用。但是您的/:页面定义总是匹配的,否则将不会被调用。否则定义在尝试加载模板时不会对来自服务器404的响应。
最简单的解决方案是为每个页面创建路由定义,而不是一般的路由定义。例如。当('/page1',…)时。当('/page2',…)等等
否则()
部件捕获与任何指定路由不匹配的路径
在您的情况下,路由匹配,但模板在指定的URL处不可用$routeProvider
对此一无所知,也无能为力。
您可以做的是以某种方式(见下文)检查模板是否可用,以及是否不使用$place
重定向到适当的路径(例如/false/404
)。
为了确定页面是否有效(即其模板可用),您可以尝试访问模板(使用$超文本传输协议
)并捕获任何错误(指示没有模板)等。但是我不喜欢这种方法(因为依赖模板的可用性来确定页面的存在/有效性不是一个很好的实践,例如,在网络或服务器问题等情况下,它很容易导致误导性的错误消息)。
我最喜欢的方法是保留一个“有效”/现有页面的列表,并对其进行检查。如果当前页面应可用,则按常规获取模板等。如果不可用,则重定向到错误页面。
上面描述的逻辑可以放在$routeProvider
的resolve
属性中(因此它会在实例化控制器和加载视图之前执行)。
例如。:
var app = angular.module(...);
// This should be a constant, so it can
// get injected into configuration blocks
app.constant('EXISTING_PAGES', [
'page1',
'page2',
...
]);
app.config(function configRouteProvider($routeProvider, EXISTING_PAGES) {
$routeProvider.
when('/', {
templateUrl: 'views/dashboard.html'
}).
when('/:page', {
templateUrl: function getPageTemplateUrl(routeParams) {
return 'views/' + routeParams.page + '.html';
},
resolve: {
exists: function resolveExists($location, $route) {
// Because this is executed before the instantiation of the
// controller and the view is not fully loaded yet, the parameters
// should be accessed via `$route.current.params`
if (EXISTING_PAGES.indexOf($route.current.params.page) === -1) {
// This is not a valid/existing page,
// let's redirect to an appropriate error page
$location.replace(); // Replace the URL in the history
$location.path('/error/404');
}
return true;
}
}
}).
// This should be a separate route, so we can redirect to it
when('/error/404', {
templateUrl: '404.html'
}).
otherwise({
redirectTo: '/error/404'
});
});
还有,看这个简短的演示。
原始网址:https://-webapp*.tl.co.in/TSEERMDEV/ 登录期间:https://login.microsoftonline.com/f35425af-4755-4e0c-xxxx-b3cb9f1c6afd/oauth2/v2.0/authorize?client_id=cccccccc-219d-4c3b-bbc9-a1d32caa79a3 重定向url:https:
我有一个文件,带有一个,具有和字段,在上,它用
问题内容: 我做了一个新的吊舱并将其推到行李箱。它出现在cocoadocs(http://cocoadocs.org/docsets/KeyboardLayoutHelper/0.0.1/)页面中,但是http://cocoapods.org/pods/KeyboardLayoutHelper重定向到github。 与一起安装时,吊舱可以正常工作。 我做错了什么还是应该提交给cocoapods.o
我对WordPress有意见。该网站工作相当正常,但在管理面板上,各种页面,如编辑帖子,安装插件,添加新插件,添加新页面,设置重定向到主页我。我疯狂地在谷歌上搜索了3天,但我刚刚发现了mod_安全问题。结果对我来说也没用。 这是我的.htaccess文件
问题内容: 假设我有一个用于编辑Pony属性的表单,并且在我的Web应用程序中有多个位置可以选择编辑Pony。例如,在小马列表中,每个小马旁边可能都有一个“编辑”链接,并且当用户查看小马时,该视图中也可能有“编辑”链接。 当用户在编辑Pony后单击“提交”时,我想使用户返回他或她单击“编辑”链接时所在的页面。 如何编写控制器以将用户重定向回他们开始的地方?当然,我可以通过向控制器传递参数来做到这一
问题内容: 我想做的是,当他们最初使用此方法时,进入免责声明页面,然后在此之后的任何时候都转到另一个页面。我当前的方法只是带给我免责声明页面。让我知道是否需要进一步解释…谢谢!!! 基本上,我需要在第一次点击此方法时添加一个If来转到页面,我想是这样的: 问题答案: 当该人第一次点击该页面时,在会话层上抛出一个标志。然后,无论何时有人进入页面,您都可以检查它是否存在,并相应地重定向他们。唯一的问题