2016-08-19 11 views
2

Eine weitere modale Frage zu Semantic UI, die sich auf die Größenänderung einer eingebetteten Google Map nach Modal bezieht, wird angezeigt. Nach mehreren Versuchen habe ich das Problem vereinfacht, Callbacks zu erhalten, wenn Modal gezeigt oder sichtbar ist.Semantic UI Modal onShow/onVisible funktioniert nicht?

Aber kein Glück. onShow oder onVisible ist immer ausgegraut. Hier ist der Code-Schnipsel:

$('.ui.modal') 
 
    .modal({ 
 
     onVisible: function() { 
 
      console.log("hahaha"); 
 
     } 
 
    }).modal({ 
 
     onApprove: function() { 
 
      console.log("hehehe"); 
 
     } 
 
    }).modal('attach events', '#btn-show');
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.1.8/semantic.min.css" rel="stylesheet"/> 
 
<!--Load JS libaries; Order is important and Load Jquery first --> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.1.8/semantic.min.js"></script> 
 

 

 
<button class="ui button" id="btn-show"> 
 
    Show modal 
 
</button> 
 

 
<div class="ui modal"> 
 
    <!--<i class="close icon"></i>--> 
 
    <div class="header"> 
 
     Mark your project on the map 
 
    </div> 
 
    <div class="content"> 
 
     <p>Content</p> 
 
     <div class="actions" style="text-align: right"> 
 
      <div class="ui deny button" id="btn-close-modal-1"> 
 
       Cancel 
 
      </div> 
 
      <div class="ui approve orange right labeled icon button" id="btn-open-modal-2"> 
 
       Next 
 
       <i class="chevron right icon"></i> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div>

Antwort

2

Sie geben sollten onVisible und onApprove Rückrufe in der gleichen .modal() Aufruf:

$('.ui.modal').modal({ 
    onVisible: function() { 
     console.log('visible'); 
    }, 
    onApprove: function() { 
     console.log('approved'); 
    } 
    }).modal('attach events', '#btn-show'); 

hier ein fiddle

+0

Thank you! Es funktionierte! Können Sie erklären, warum es so ist? – Jie

+0

Es sollte ein Nebeneffekt von Javascript-Polymorphismus sein. Meine Vermutung ist, wenn Sie mehrere '.modal ({...}) 'Aufrufe verketten, Parameter-Objekt, das im letzten Aufruf übergeben wird, alle vorherigen neu definiert und alle nicht angegebenen Werte auf' undefined 'festgelegt. Es ist jedoch nicht der Fall von '.modal ('behaviour', ...) ', da seine Parameter kein Objekt sind. – Kemi

+0

Danke für die Erklärung! – Jie