example - angularjs modal form



どこからでもAngular UI Modalを閉じる方法 (2)

私はAngular UIのブートストラップモーダルダイアログを使用して、サービス内でそれを作成しています:

myApp.factory('ModalService', ['$modal', function($modal) {
    return {
        trigger: function(template) {
            $modal.open({
                templateUrl: template,
                size: 'lg',
                controller: function($scope, $modalInstance) {
                    $scope.ok = function() {
                        $modalInstance.close($scope.selected.item);
                    };
                    $scope.cancel = function() {
                        $modalInstance.dismiss('cancel');
                    };
                }
            });
        },
        close: function() {
            // this should close all modal instances
        }
    };
}]);

ModalService.close()をコントローラなどから呼び出すときに、どのようにしてすべてのモーダルインスタンスを閉じることができますか?

https://ffff65535.com


$modalStackサービスを呼び出し、 $modalStack.dismissAll()関数を呼び出しGitHub 。詳細はGitHubのコードを参照しGitHubください:

myApp.factory('ModalService', ['$modal', '$modalStack' function($modal, $modalStack) {
    return {
        trigger: function(template) {
            $modal.open({
                templateUrl: template,
                size: 'lg',
                controller: function($scope, $modalInstance) {
                    $scope.ok = function() {
                        $modalInstance.close($scope.selected.item);
                    };
                    $scope.cancel = function() {
                        $modalInstance.dismiss('cancel');
                    };
                }
            });
        },
        close: function(reason) {
            $modalStack.dismissAll(reason);
        }
    };
}]);

これは、工場や追加のコードを使用せずに私のプロジェクトで作業している方法です。

  //hide any open $mdDialog modals
  angular.element('.modal-dialog').hide();
  //hide any open bootstrap modals
  angular.element('.inmodal').hide();
  //hide any sweet alert modals
  angular.element('.sweet-alert').hide();

私は$rootScope.$emit('logout');としてログアウトを出すタイムアウト関数を持ってい$rootScope.$emit('logout'); 私のサービスのリスナーは以下の通りです:

$rootScope.$on('logout', function () {
                    //hide any open $mdDialog modals
                    angular.element('.modal-dialog').hide();
                    //hide any open bootstrap modals
                    angular.element('.inmodal').hide();
                    //hide any sweet alert modals
                    angular.element('.sweet-alert').hide();

                    //do something else here  

                });

私はこれが正しいアプローチであるかどうかはわかりませんが、それは私のために働きます。





angularjs-service