是否可以在Angular 1.5应用程序中配置ui-router
以完全忽略地址栏?
期望的行为是这样的:
更新:我正在使用非常具体的用例创建应用程序,而不是网站。普通的网页浏览实践不适用于此处。即使它看起来与常识相矛盾,也请接受它们的要求。
答案 0 :(得分:3)
同意如果我们考虑经典的网络应用程序,所述方法并不好。
我尝试创建一个满足您需求的示例应用程序。 以下是我的水果应用程序中我的路由器配置(router.config.js)文件的样子:
.state('start', {
url: '/',
templateUrl: '../app/start/start.html',
controller: 'startCtrl as vm',
})
.state('fruits', {
templateUrl: '../app/fruits/fruitshtml',
controller: 'fruitsCtrl as vm',
})
.state('fruits.details', {
params: {
fruitId: undefined
},
templateUrl: '../app/fruits/fruitdetails.html',
controller: 'fruitDetailsCtrl as vm'
})
国家解释:
start
:
url /是我的申请的入口点。如果url为/,则会加载start
状态。
fruits
:
此状态显示我的应用程序中的水果列表。请注意,此状态没有定义url
。所以,如果我们进入这个状态,url就不会改变(State会改变,但是url不会改变)。
fruits.details
:
此状态应显示标识为fruitId
的水果的详细信息。请注意,我们已在params
中传递了fruitId。 params用于传递参数而不使用url!因此,对参数的传递进行了排序。我可以写ui-sref="fruit.details({ fruitId: my-fruit-id })"
导航到fruit.details状态,并用fruitId my-fruit-id显示我的水果的详细信息。
正如您可能已经知道的那样,主要的想法是使用状态作为导航手段。
我的应用程序是否通过您的积分?
- >
url
start
。该应用程序不会将用户带到任何不同的状态,但它会将状态更改为start
,或者我们可以说我们的默认状态。start
州start
,那么您的应用就会启动状态。 <强>更新强>
正如OP @Impworks所指出的那样,如果我们将启动状态的url
设置为/
,则也会传递第二点的解决方案。这样,如果我们将任何字符串附加到url,状态将不会改变。