我有一个利用UI-Router处理所有状态转换的应用程序。大多数州没有与它们相关联的“url”属性,因此它们只能通过应用程序内控件访问,但其中一些需要能够从应用程序外部访问并具有“url”属性。
以下是一些类似于我的设置的示例代码:
$stateProvider
.state('home',{
url: '/',
templateUrl : 'app/home.html',
controller : homeCtrl,
controllerAs : 'vm',
})
.state('example1',{
templateUrl : 'app/example1.html',
controller : example1Ctrl,
controllerAs: 'vm',
})
.state('example2',{
templateUrl : 'app/example2.html',
controller : example2Ctrl,
controllerAs: 'vm',
})
.state('example3', {
url : '/example3',
templateUrl : 'app/example3.html',
controller : example3Ctrl,
controllerAs : 'vm',
})....
关闭代码片段,我需要/ example3可以从应用程序外部访问,但是当用户导航到任何其他状态时,浏览器中的URL仍为“sample.com/#/example3”。
如何在转移到没有“url”属性的状态时将网址重置为“sample.com/#/”?
答案 0 :(得分:1)
如果您希望他们恢复到" /"
,您必须让他们成为回家路线的孩子&#39; @ view&#39;在此示例中,更改了最顶层的<ui-view></ui-view>
$stateProvider
.state('home',{
url: '/',
templateUrl : 'app/home.html',
controller : homeCtrl,
controllerAs : 'vm',
})
.state('home.example1',{
views: {
'@': {
templateUrl: 'app/example1.html',
controller: 'example1Ctrl as vm',
},
},
})
.state('home.example2',{
views: {
'@': {
templateUrl: 'app/example2.html',
controller: 'example2Ctrl as vm',
},
},
})
.state('example3', {
url : '/example3',
templateUrl : 'app/example3.html',
controller : example3Ctrl,
controllerAs : 'vm',
})