2

我在我的webapp中使用angular-ui模式。其中一個模型會顯示導航到應用程序各個部分的許多鏈接(錨點元素)。模態可以像往常一樣用modal.dismiss()或modal.close()來關閉。但是當有人通過單擊錨點導航出來時,我需要關閉它?通常(不是角度)我可以將一個事件附加到所有錨點,並從那裏關閉模態。但角度看起來有點複雜,並不是非常「棱角分明」 - 關於如何實現這一點的任何想法/方向?自動關閉導航模式(點擊錨點時)

例如:我正在使用angular-ui-router,所以如果這可以通過路由來解決它也可以解決我的問題。

謝謝!

+0

有一個不同的/更好的解決方案類似,但不重複的問題在這裏:https://stackoverflow.com/questions/23762323/is-there-a-way-to-automatically-close-angular- ui-bootstrap -modal-when-route-chan?rq = 1 – boatcoder

回答

3

角UI路由器觸發事件​​時,發生了狀態改變,所以在你的控制器,你可以這樣做:

$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(); 
    } 
}) 
+0

謝謝!我最終把它定位在$ rootscope中,作爲開放模式的一個捕獲 – alonisser

0

使用$ modalStack.dismissAll()關閉任何modalbox狀態變化時。

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(); 
     }); 

    } 
]);