如何在不先导航到 index.html 的情况下直接进入 ui-router 的状态
How can I go directly to a state with ui-router without first navigating to index.html
我有一个 AngularJS 应用程序正在使用 ui-router。一切正常,但我想要这样访问用户注册确认屏幕:
http://localhost:2757/Auth/confirmation
在我目前的配置中,当我打开带有此 link 的浏览器页面时,它不会查找 index.html 并且不会进入 /Auth/confirmation 状态。我明白为什么会这样,但我不知道如何解决这个问题。
有人可以给我一些建议,告诉我如何/如果我可以制作一个 link,这将 让我直接进入 /Auth/confirmation。
我能想到的大概是这样的:
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 << returns 找不到页面
http://localhost:2757/index.html/Auth/register << returns 找不到页面
其实 qui 很简单,但是 requires 在服务器端工作:必须将服务器配置为为路径 [=10] 的 index.html 页面提供服务=](以及您应用的所有其他可添加书签的网址)。
一旦为真,前往 /Auth/confirmation
的用户将下载 index.html 文件,这将启动 angular 应用程序。 ui-router模块会解析位置,加载相应的状态,显示相应的view。
我想说我们在这里需要的是 - 让 index.html
被加载 - 作为 SPA(单页应用程序)。然后我们将受益于 UI-Router 中内置的功能:
Parameters:
what String | RegExp | UrlMatcher The incoming path that you want to redirect.
handler String | Function The path you want to redirect your user to.
handler
as String
If handler is a string, it is treated as a redirect, and is interpolated according to the syntax of match (i.e. like String.replace() for RegExp, or like a UrlMatcher pattern otherwise).
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
Parameters:
path String | Function The url path you want to redirect to or a function rule that returns the url path. The function version is passed two params: $injector and $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()
(例如声明的顺序)也请在这里查看 (包含更多详细信息和示例)
- Angular UI-Router $urlRouterProvider .when not working *anymore*
- Angular UI-Router $urlRouterProvider .when not working when I click
我有一个 AngularJS 应用程序正在使用 ui-router。一切正常,但我想要这样访问用户注册确认屏幕:
http://localhost:2757/Auth/confirmation
在我目前的配置中,当我打开带有此 link 的浏览器页面时,它不会查找 index.html 并且不会进入 /Auth/confirmation 状态。我明白为什么会这样,但我不知道如何解决这个问题。
有人可以给我一些建议,告诉我如何/如果我可以制作一个 link,这将 让我直接进入 /Auth/confirmation。
我能想到的大概是这样的:
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 << returns 找不到页面
http://localhost:2757/index.html/Auth/register << returns 找不到页面
其实 qui 很简单,但是 requires 在服务器端工作:必须将服务器配置为为路径 [=10] 的 index.html 页面提供服务=](以及您应用的所有其他可添加书签的网址)。
一旦为真,前往 /Auth/confirmation
的用户将下载 index.html 文件,这将启动 angular 应用程序。 ui-router模块会解析位置,加载相应的状态,显示相应的view。
我想说我们在这里需要的是 - 让 index.html
被加载 - 作为 SPA(单页应用程序)。然后我们将受益于 UI-Router 中内置的功能:
Parameters:
what String | RegExp | UrlMatcher The incoming path that you want to redirect.
handler String | Function The path you want to redirect your user to.
handler
as StringIf handler is a string, it is treated as a redirect, and is interpolated according to the syntax of match (i.e. like String.replace() for RegExp, or like a UrlMatcher pattern otherwise).
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
Parameters:
path String | Function The url path you want to redirect to or a function rule that returns the url path. The function version is passed two params: $injector and $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()
(例如声明的顺序)也请在这里查看 (包含更多详细信息和示例)
- Angular UI-Router $urlRouterProvider .when not working *anymore*
- Angular UI-Router $urlRouterProvider .when not working when I click