我有一个使用ui-router的AngularJS应用程序。一切正常,但我希望用户注册确认屏幕可以这样访问:
http://localhost:2757/Auth/confirmation
在我目前的配置中,当我使用此链接打开浏览器页面时,它不会查找index.html,也不会进入/ Auth / confirm状态。我理解为什么会这样,但我不知道如何解决这个问题。
有人可以给我一些建议,告诉我如何/如果我能建立一个让我直接进入/ Auth /确认的链接。
我能想到的可能就是这样:
http://localhost:2757/index.html?load=AuthConfirm
然后以某种方式检查一下在index.html加载后检测到要转换到的新状态。
这是我的AppConfig文件:
var auth = {
name: 'auth',
url: '/Auth',
views: {
'root': {
templateUrl: 'app/auth/partials/home.html'
}
}
};
var authContent = {
name: 'auth.content',
url: '/:content',
views: {
'root': {
templateUrl: 'app/exams/partials/home.html'
},
'content': {
templateUrl: function (stateParams) {
return 'app/auth/partials/' + stateParams.content + '.html'
}
}
}
}
这是我尝试过的东西:
http://localhost:2757/index.html<<带我到我的主索引页面
http://localhost:2757/index.html/Auth<<返回页面未找到
http://localhost:2757/index.html/Auth/register<<返回页面未找到
答案 0 :(得分:4)
我想说的是,我们需要的是 - 让index.html
成为一个SPA(单页应用程序)。然后我们将从UI-Router中内置的功能中获益:
参数:
什么字符串| RegExp | UrlMatcher要重定向的传入路径 处理程序字符串|功能您要将用户重定向到的路径。
handler
为字符串如果handler是一个字符串,则将其视为重定向,并根据match的语法进行插值(例如,像RegExp的String.replace(),或者像UrlMatcher模式一样)。
app.config(function($urlRouterProvider){
// when there is an empty route, redirect to /index
$urlRouterProvider.when('', '/index');
// You can also use regex for the match parameter
$urlRouterProvider.when(/aspx/i, '/index');
})
.otherwise()
for invalid routes
参数:
路径字符串|功能要重定向到的url路径或返回url路径的功能规则。函数版本传递两个参数:$ injector和$ location。
app.config(function($urlRouterProvider){
// if the path doesn't match any of the urls you configured
// otherwise will take care of routing the user to the specified url
$urlRouterProvider.otherwise('/index');
// Example of using function rule as param
$urlRouterProvider.otherwise(function($injector, $location){
... some advanced code...
});
})
如何正确使用.when()
(例如声明的订单)请在此处查看(更多详细信息和示例)
答案 1 :(得分:1)
实际上非常简单,但需要在服务器端工作:必须将服务器配置为提供路径/Auth/confirmation
的index.html页面(以及应用程序的所有其他可收藏的URL)。< / p>
一旦确实如此,转到/Auth/confirmation
的用户将下载index.html文件,该文件将启动角度应用程序。 ui-router模块将分析位置,加载相应的状态,并显示相应的视图。