2017-03-26 9 views
2

ユーザーが解除ボタンを押すのではなく、モーダルウィンドウの外側をクリックして閉じると、ブートストラップモーダルをリセットするときに問題が発生します。私のdatetimepickerは、モーダルウィンドウが正しくリセットされないときはいつでも動作を停止します。モーダルウィンドウの外側をクリックしたときにブートストラップモーダルをリセットする

これは、それが開くたび、私のモーダルが何をすべきかです:

Image1

しかし、これは私がちょうどモーダルウィンドウの外に灰色の領域を押すことで私の窓を棄却した後、ウィンドウを開いた場合に何が起こるかです:

Image2

私はそれだけで正常に動作Avbryt(解任)ボタンを使用して却下するたびに。 は、私はエラーを取得していないし、これは、モーダルサービスがJSfiddle上で見つけることができます私は私のモーダル

$scope.show = function() { 
    ModalService.showModal({ 
      templateUrl: 'newProject.html', 
      controller: "NewProjectModalController" 
     }).then(function(modal) { 
      modal.element.modal(); 
      modal.close.then(function(result) { 
       $('#newProjectModal').modal('hide'); 
       $('body').removeClass('modal-open'); 
       $('.modal-backdrop').remove(); 
      } 
     }); 
    }); 
} 
$scope.dismiss = function() { 
    close(false, 500) 
} 

に使用するコードです。

私は、それが本当にモーダルウィンドウの端を閉じるトリガーであることを発見しました。私が小さな広場の中でモーダルの外側に当たった場合、それは解消されますが、私が外側の背景に当たった場合はそうではありません。

enter image description here

+0

マインドを? – Pytth

+0

ここでコードが少なすぎます。以下の回答がうまくいかない場合は、より多くのコードを投稿してください。 (例えば 'close'の定義) – blackmiaool

+0

@Pytth ModalServiceのコードを追加しました。また、質問への小さな更新を追加しました。モーダルウィンドウの外をクリックしても前のウィンドウは削除されないことに気づきました。複数のIDがあるため、カレンダーが失敗するのはおそらく原因です。 – PhyCoMath

答えて

2

、プロジェクト内にbootstrap.jsとともに角度モーダルサービスを使用しています。だから私はそのgithubのレポを検索し、この問題を発見した:https://github.com/dwmkerr/angular-modal-service/issues/107

そこのコメントによると、あなたは以下のようにコードを変更する必要があります。 `ModalService`のコードを示す

ModalService.showModal({ 
     templateUrl: 'newProject.html', 
     controller: "NewProjectModalController" 
    }).then(function(modal) { 
     modal.element.modal(); 
     modal.close.then(function(result) { 
      $('#newProjectModal').modal('hide'); 
      $('body').removeClass('modal-open'); 
      $('.modal-backdrop').remove(); 
     } 
     // added by me 
     modal.element.on('hidden.bs.modal', function() {// bootstrap event 
      modal.scope.close(false,500); 
     }); 
    }); 
}); 
+0

同様の問題を発見していただき、ありがとうございます。しかし、私は 'Uncaught TypeError:modal.scope.closeは関数ではありません.'という考えはありますか? UPDATE:気にしないで、問題を解決しました。ちょうどあなたがしていたものだったモーダルスコープの識別子を入力しました。ありがとうございました! – PhyCoMath

+0

コードは機能しませんが、申し訳ありませんが、私はangle-modal-serviceの公式のjsfiddleで試してみました。これは、コードとの違いによって発生する可能性があります。@PhyCoMath – blackmiaool

+0

更新されたコメントを見る:)それは働いた、ちょうど範囲を変えなければならなかった: – PhyCoMath

2

ユーザーがモーダルな背景をクリックするとAvbryt]ボタンをクリックしてイベントをトリガしてみてください。次のようなものがあります。

$('.modal-backdrop').click(function(){ 
    $('.avbryt').trigger('click'); 
}); 

根本的な問題は何でも回避してください。参考のため

:問題の画像によるとhttp://api.jquery.com/trigger/

+0

私は自分のコードに何か気づいたので私の質問を更新しました。モーダル解除は、実際にはモーダルウィンドウの外側をクリックすることによってトリガされますが、バックグラウンドクリックではなくモーダルクラス内でトリガされます。私はまた、モーダルウィンドウの外をクリックしても前のウィンドウが削除されず、隠されていないことに気付きました。しかし、解除ボタンはそれを削除します。 – PhyCoMath