我想在打开 ui 引导模式时临时更改浏览器 url(后面的页面应保持原样,只有 url 更改)。当模态关闭时,url 应该恢复到原来的。
脚步 :
示例实现:Pinterest 引脚及其引脚详细信息弹出窗口。
最佳答案
您可以使用 ui-router-extras sticky state解决您的问题。链接中有一个简单的模态示例。您应该创建两个命名 View ,一个用于主要内容(背景),一个用于模态。
<div ui-view="app"></div>
<div ui-view="modal"></div>
标记状态,从您要访问的模式为
sticky: true
在路由定义中。.state('main', {
abstract: true,
url: '/',
templateUrl: '_layout.html'
})
.state('main.index', {
url: '',
sticky: true,
views: {
'app': {
templateUrl: 'index.html'
}
}
})
.state('main.login', {
url: 'login/',
views: {
'modal': {
templateUrl: 'login.html'
}
}
})
还要为 stateChangeSuccess 添加一个事件:
$rootScope.$on('$stateChangeSuccess', function (ev, to, toParams, from, fromParams) {
if ((from.views && !from.views.modal) || !from.views) {
$rootScope.from = from;
$rootScope.fromParams = fromParams;
}
});
所以,当你需要关闭模态时,你可以
$state.go($rootScope.from, $rootScope.fromParams);
该解决方案存在小问题。如果您在模态状态下重新加载页面,则应用程序
ui-view
将是空的。
关于Angularjs UI Bootstrap 在打开时临时更改 URL 并在关闭时恢复为原始 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37598079/