当用户进入特定状态( /login
)时,我会显示和隐藏模式,但如果用户进入 /register
,我会将模式保留在后台来自 /login
.
如果用户在/login
然后转到 /register
,我希望登录模式保持打开状态,而如果用户在 /login
然后转到另一个页面,我会让登录模式消失。
实际上我设置了Angular-ui-router
$stateProvider
这样:
app.config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('home', {
url: "/",
templateUrl: "templates/home.html",
controller: 'HomeCtrl'
})
.state('login', {
url: "/login",
onEnter: function ($stateParams, $state, Modal) {
// * modalCtrl for Login
if (window.loginModal) {
window.loginModal.remove();
delete window.loginModal;
Modal.fromTemplateUrl('templates/user/login.html', function (modal) {
window.loginModal = modal;
loginModal.show();
});
} else {
Modal.fromTemplateUrl('templates/user/login.html', function (modal) {
window.loginModal = modal;
loginModal.show();
});
}
},
onExit: function ($stateParams, $state) {
if ( window.loginModal && /* condition like "!nextState.is('register')" */ ) {
window.loginModal.hide();
}
}
})
.state('register', {
url: "/register",
onEnter: function ($stateParams, $state, Modal, SlideBoxDelegate) {
// * modalCtrl for Register
if (window.registerModal) {
window.registerModal.remove();
delete window.registerModal;
Modal.fromTemplateUrl('templates/user/register.html', function (modal) {
window.registerModal = modal;
SlideBoxDelegate.update();
registerModal.show();
});
} else {
Modal.fromTemplateUrl('templates/user/register.html', function (modal) {
window.registerModal = modal;
SlideBoxDelegate.update();
registerModal.show();
});
}
},
onExit: function ($stateParams, $state) {
if ( window.registerModal ) {
window.registerModal.hide();
}
}
})
.state('not_found', {
url: "/not_found",
templateUrl: 'templates/not_found.html',
controller: 'NotFoundCtrl'
})
$urlRouterProvider.otherwise("/not_found");
$locationProvider.html5Mode(true);
})
有没有办法设置
condition like "!nextState.is('register')"
?感谢您阅读:)
最佳答案
您可以收听$stateChangeStart
并注意 to
的值参数 onExit
可以访问的某个位置函数,即可注入(inject)的值或服务。
将来,将有一个可注入(inject)的服务来代表转换本身,您将能够检查和操作此类事情。
关于angularjs - 如何知道 ui-router 中的下一个状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21068002/