2016-04-12 47 views
-1

ortadan yapar:Bootstrap modal kaydırma Ben böyle benim yönergesi kodda bir kalıcı açıyorum

var modalInstance = $modal.open({ 
     templateUrl: "app/templates/modal-assign.html", 
     controller: "assignModalController", 
     resolve: { 
     "call": function() { 
      return $scope.call; 
     } 
     } 
    }); 

Ama ben kalıcı kapatmak gerekir benim assignModalController bir doğrulama vardır: AssignValidatorService .validateOpeningModal ($ kapsamı) .ve (fonksiyonu (doğrulama) { halinde (validation.isValid) { $ scope.handleCancel (validation.msg)! }) (yanlış $ rootScope.setBusyIndicator; } fonksiyonu () { $ rootScope.setBusyIndicator (false); });

ve benim handleCancel:

$scope.handleCancel = function(message) { 
    $log.info(filename + " - handleCancel"); 
    $modalInstance.dismiss(message); 
}; 

Yani, kalıcı düzgün kapatıyor ancak ekran kaydırma çubuğu kayboldu.

Uzun zamandır cevap aradıktan sonra, bootstrap'in <body> etiketinde bir modal-open sınıfı eklediğini anladım. Bu modal yakın olduğunda, bootstrap'in bu sınıfı <body>'dan kaldırması varsayılır. DOM'u inceledim ve modal-açık sınıfı <body>'da gördüm, el ile kaldırdım ve ekran kaydırma çubuğu yeniden belirdi.

böyle, handleCancel fonksiyonunda koduna göre birçok yönden o sınıfını kaldırmak için çalıştı:

$scope.handleCancel = function(message) { 
    $log.info(filename + " - handleCancel"); 
    angular.element(document).find("body").removeClass(); 
    $modalInstance.dismiss(message); 
}; 

... ama hiçbir başarı!

Herhangi bir fikrin var mı? harcanan uzun saatler sonra

cevap

0

Benim çözümüm var: Muhtemelen

$scope.handleCancel = function(message) { 
    $log.info(filename + " - handleCancel"); 
    $timeout(function(){ 
     $modalInstance.dismiss(message); 
    }, 500);  
}; 

/add modal-açık sınıf ortasında oldu kaldırmak için önyükleme süreci ve bunu sınıf ekleyerek, bu modal kapatmak ve gelmez tetiklenir Çıkarma. Bu yüzden söz konusu işlemi görevden gecikme ve her şey şu anda

iyi çalışıyor: D

Teşekkür!