2017-08-07 70 views
0

我有一個引導模式如下。我正在使用ng-show來觸發模態。彈出來了,當我加載它第一次,當我關閉彈出,然後重新運行第二次彈出不來就算x.length是出現零0當我們加載第二次時,Bootstrap彈出不顯示

<div class="modal fade in" id="modal" aria-hidden="false" style="display: block;" role="dialog" ng-show="x.length==0" data-toggle="modal" data-target="#modal" > 
              <div class="modal-dialog" > 

             <!-- Modal content--> 
             <div class="modal-content"> 

             <div class="modal-body" style="background-color: #428bca"> 
              <p ><font color="#FFFFFF">testing</font> 
              <button type="button" class="btn btn-default" data-dismiss="modal" onclick="$('#modal').remove();">Close</button> 
             </div> 

             </div> 

            </div> 
    </div> 
+0

的$( '#模式')刪除()在你的onclick將會從DOM中刪除的模式。這是你的意圖嗎?如果您只是想在不從DOM中刪除它的情況下解僱它,那麼您只需要data-dismiss =「modal」。此外,data-toggle =「modal」和data-target =「#modal」需要放在觸發模式的元素上,不知道爲什麼你在模式本身上有它。 – ami91

+0

@ ami91數據關閉不關閉彈出。我確實嘗試過那個。 – Kiran

+0

查看我的答案,瞭解使用引導模式的可能方法。你會看到我需要解除模態的是data-dismiss =「modal」屬性。 – ami91

回答

2

要創建的模式的方式成爲問題所在。如果按照我在代碼片段中顯示的方式創建模式,它將起作用。 data-toggle =「modal」和data-target =「#modal」需要在觸發模態的元素上,並關閉模態,所有你需要的就是data-dismiss =「modal」。您可以用ng-show條件顯示或隱藏您的觸發元素。

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.x = []; 
 
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    <div data-toggle="modal" data-target="#modal" ng-show="x.length==0">Click Here</div> 
 
    <div class="modal fade in" id="modal" role="dialog"> 
 
    <div class="modal-dialog" > 
 
     <!-- Modal content--> 
 
     <div class="modal-content"> 
 
     <div class="modal-body" style="background-color: #428bca"> 
 
      <p><font color="#FFFFFF">testing</font></p> 
 
      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

如果你不想在你的HTML觸發要素如上面的例子,然後從你的控制器,可以顯示使用$(「#模式」)。模態的模態('show')並使用$('#modal')。modal('hide')隱藏它。看看這裏的模式選項 - https://v4-alpha.getbootstrap.com/components/modal/#usage

更新: 基於評論,以下片段顯示如何顯示/隱藏模式,而無需觸發按鈕。它使用上面列出的引導模式選項 -

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.x = []; 
 
    if($scope.x.length === 0){ 
 
     $("#modal").modal('show'); 
 
    } 
 
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    <div class="modal fade in" id="modal" role="dialog"> 
 
    <div class="modal-dialog" > 
 
     <!-- Modal content--> 
 
     <div class="modal-content"> 
 
     <div class="modal-body" style="background-color: #428bca"> 
 
      <p><font color="#FFFFFF">testing</font></p> 
 
      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

我沒有任何按鈕來觸發模態。當頁面加載時,我必須檢查結果並彈出成功。這就是爲什麼我選擇了ng-show選項,但是,它似乎有一些問題。 – Kiran

+0

@Kiran檢查我的更新答案,解釋你的用例。模式加載時不需要點擊按鈕,它可以被解僱就好了。每次用代碼重新加載頁面時,模態都會出現。 – ami91

+0

它沒有工作。我遇到同樣的錯誤,因爲ng-show – Kiran

相關問題