我在我的webapp中使用angular-ui模态。其中一个模型显示导航到应用程序各个部分的许多链接(锚元素)。模态可以像往常一样用modal.dismiss()或modal.close()关闭。但是当有人通过单击锚点导航出来时我需要关闭它吗?通常(不是有角度的)我可以将事件附加到所有锚点击并从那里关闭模态。但是角度似乎有点复杂而且不是很“棱角分明” - 关于如何实现这个的任何想法/指示?
例如:我正在使用angular-ui-router,所以如果可以通过路由解决这也可以解决我的问题。
谢谢!
答案 0 :(得分:3)
当发生状态更改时,Angular-ui-router会触发事件,因此在您的控制器中,您可以执行以下操作:
$scope.currentModal = undefined;
// whenever a modal opens, ensure it is assigned to the $scope.currentModal. Not clear how
// you are managing your modals at the moment.
// this event-listener closes the current modal (if any)
$scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
if ($scope.currentModal) {
$scope.currentModal.dismiss();
}
})
答案 1 :(得分:0)
使用$ modalStack.dismissAll()在状态发生变化时关闭任何模态框。
angular.module('myApp').controller('AppCtrl', ['$scope', '$rootScope', '$modal', '$modalStack',
function ($scope, $rootScope, $modal, $modalStack) {
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams, options){
$modalStack.dismissAll();
});
}
]);