2017-08-25 40 views
0

我知道有angular bootstarp modal但現在我有使用$('#msg-modal').modal();如何在模式加載不同的模板時觸發控制器的初始化 - angularJS

我已經創建模式爲打開一個模式:

<div class="modal signUpContent fade" id="msg-modal" tabindex="-1" role="dialog"> 
<div class="modal-dialog" style="margin-top: 200px;"> 
    <div class="modal-content" ng-style="modal_data.style.container"> 
     <div class="modal-header" style="background: #0bb586;" ng-style="modal_data.style.header"> 
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> &times; </button> 
      <h3 class="modal-title-site text-center"> {{ modal_data.title }} </h3> 
     </div> 
     <div class="modal-body"> 
      <center ng-if="!(modal_data.template)"><span compile="modal_data.msg"></span></center> 
      <span ng-if="(modal_data.template)"> 
       <div ng-include="modal_data.template"></div> 
      </span> 
      <hr> 
      <center> 
       <a ng-style="modal_data.style.ok_btn" ng-click="buttonClick(modal_data.ok_btn.on_click)" class="btn btn-primary smooth-corner" ng-show="modal_data.ok_btn" ng-href="{{ modal_data.ok_btn.path }}" ng-bind="modal_data.ok_btn.name"> </a> 
       <a ng-style="modal_data.style.cancel_btn" ng-click="buttonClick(modal_data.cancel_btn.on_click)" class="btn btn-primary smooth-corner" ng-show="modal_data.cancel_btn" ng-bind="modal_data.cancel_btn.name"></a> 
      </center> 
     </div> 
    </div> 
</div> 
</div> 

正如你所看到的,我有<div ng-include="modal_data.template"></div>加載模板時傳遞給它。問題是,如果我在modal_data.template中分配了一個控制器,它的init函數只會被調用一次。下次顯示模式時,init函數不會被觸發。

有什麼方法可以解決這個問題。我知道這個問題基本上是因爲它通過jQuery封閉,$('#msg-modal').modal('hide');,這實際上隱藏元素,但不會關閉它

+0

模式不能被解除/關閉還是必須隱藏? – rrd

+0

@rrd「''有沒有可以解僱的人,我覺得它沒有幫助我:( –

+0

嘗試@esquarial提供的答案,然後你可以在控制器中使用$ onInit(),在實例化時觸發一次。 – rrd

回答

1

如果在控制器行中添加ng-if,並且在需要關閉模式時將其設置爲false,並且在模式需要打開時將其設置爲true,則控制器將重新初始化。

我假設你在一起使用ng-include和控制器。所以線會。

<div ng-include="modal_data.template" ng-if="toggle"></div> 

然後當你使用open函數add。

$('#msg-modal').modal(); 
$scope.toggle=true; 

當你關閉你使用的模態。

$('#msg-modal').modal('hide'); 
$scope.toggle=false; 
+0

我在模板的ng-controller' div處使用了'ng-if =「toggle」',它工作。謝謝 –

0

試試這個$('#msg-modal').modal('destroy').remove()

這將破壞模態,然後取下那是格「主辦的」模態完全來自DOM

+0

TypeError:data [選項]不是函數 –

相關問題