页面加载时Angular-UI Bootstrap模态触发器

时间:2014-12-18 23:48:00

标签: angularjs angular-ui

虽然我查看了answers here,但我还是无法在页面加载时触发openModal()功能。

在我的控制器中,我有代码(下面的问题),允许openModal()通过ng-click指令或在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

3 个答案:

答案 0 :(得分:1)

我不知道这个解决方案对于这个问题是否为时已晚,但可能对某些人有用。

  1. 创建正常的bootstrap模式

    $scope.myDialog = function () {
        $uibModal.open({
           templateUrl: 'templatefolder/modal.html',
           backdrop: 'static',
           windowClass: 'modal',
           size: 'lg',
           controller: function ($scope, $uibModalInstance) {
                $scope.cancel = function () {
                   $uibModalInstance.dismiss();
                };
              }
        });
    };  
    
  2. 在html页面中调用模式,如<span ng-init="myDialog()"></span>

  3. 就是这样。这对我有用,我希望它也适用于某人。

答案 1 :(得分:0)

您可以直接在控制器中定义它的位置下方调用$scope.openModal()。它会立即打开模态。

答案 2 :(得分:0)

虽然仍然无法直接从同一个控制器中调用它,但我的解决方案是添加另一个方法,该方法从视图中的ng-init调用:

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