2014-12-18 44 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

    相关问题