2014-12-18 42 views
0

雖然我看過answers here,但在頁面加載時我仍然無法觸發我的openModal()函數。頁面加載時的Angular-UI Bootstrap模式觸發器

在我的控制,我的代碼(下面的問題),這確實允許openModal()要麼從NG-點擊指令或觸發精細進入在Chrome控制檯以下時:

angular.element($0).scope().openModal()

我的問題是,當我試圖在頁面加載時有條件地打開模式。我當前的代碼是:

$scope.openModal = function (size) { 

    modalInstance = $modal.open({ 
     templateUrl: 'myModalContent.html', 
     controller: 'pageBuilder', 
     size: 'lg', 
     resolve: { 
      items: function() { 
       return $scope.chosenDeploymentSchedule; 
      } 
     } 
    }); 
}; 

angular.element(document).ready(function() { 

// $scope.openModal(); 
    console.log('Hello World'); 
}); 

我得到我的Hello World打印,但是當我試圖取消對$scope.openModal();,我得到undefined + Hello World打印出的無限循環。

回答

0

您可以直接在控制器中定義它的地方調用$scope.openModal()。它會馬上打開模式。

+0

不幸的是:( – 2014-12-19 02:16:10

+1

我測試過它,它對我來說工作得很好。你能製作一個plunkr來排除故障嗎? – nairys 2014-12-19 02:17:18

0

雖然仍無法直接從同一個控制器中調用它,我的解決辦法是添加它獲取從ng-init視圖稱爲另一種方法:

$scope.launchModalConditionally = function(){ 
    if(!$scope.gotCredentials){ 
     $scope.openModal(); 
    } 
}; 
1

我不知道,如果這個解決方案是對於這個問題來說太遲了,但可能對某個人有用。

  1. 在HTML頁面中,像這樣<span ng-init="myDialog()"></span>

這是它創建正常的引導模式

$scope.myDialog = function() { 
    $uibModal.open({ 
     templateUrl: 'templatefolder/modal.html', 
     backdrop: 'static', 
     windowClass: 'modal', 
     size: 'lg', 
     controller: function ($scope, $uibModalInstance) { 
      $scope.cancel = function() { 
       $uibModalInstance.dismiss(); 
      }; 
      } 
    }); 
}; 
  • 調用模式。這對我有用,我希望它也適用於某人。

  • +0

    ng-init做到了! – Dhruv 2017-04-11 13:45:19

    相關問題