从控制器触发模态弹出窗口

时间:2015-12-04 12:20:19

标签: angularjs twitter-bootstrap angular-ui-bootstrap bootstrap-modal

我有一个bootstrap模式弹出窗口,我用我的modalcontroller填充数据。在我填写数据后,我想展示它。为了能够在进入页面时立即显示modalpopup,我想直接触发它。现在我有一个按钮可以做到这一点,但我怎么能以适当的方式自动完成呢?

<!-- Trigger the modal with a button -->
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog" ng-init="getAllItems()">
    <div class="modal-dialog">

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Modal Header</h4>
            </div>
            <div class="modal-body">
                <div class="">
                    <form class="form-horizontal" name="form" role="form">
                        <div ng-repeat="item in items">
                            <input type="radio" name="fundselector" ng-model="item" ng-value="item"/> {{item}} <br />
                        </div>
                    </form>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>

    </div>
</div>

我的控制器:

angular.module("Modal")
.controller("ModalController",
[
"$scope", "$rootScope", "$location", "ModalService", "AuthenticationService",
function ($scope, $rootScope, $location, ModalService, AuthenticationService) {

    AuthenticationService.GetCurrentWindowsUser(function(username) {
        $scope.username = username;
    });

    $scope.getAllItems = function () {
        AuthenticationService.GetCurrentWindowsUser(function (username) {
            if (username) {
                AuthenticationService.GetItems(username, function (items) {
                    $scope.items = items;
                    //Trigger modalpopup here
                });
            }
        });
    }
}
]);

4 个答案:

答案 0 :(得分:5)

不要使用jquery,请使用angular-ui。

https://angular-ui.github.io/bootstrap/#/modal

您可以像下面一样以编程方式打开模式,并在解析中传递您的数据。这是从他们的例子直接复制和粘贴。

var modalInstance = $uibModal.open({
      animation: $scope.animationsEnabled,
      templateUrl: 'myModalContent.html',
      controller: 'ModalInstanceCtrl',
      size: size,
      resolve: {
        items: function () {
          return $scope.items;
        }
      }
    });

答案 1 :(得分:1)

尝试这样的事情 -

$( '#yourModalId')模态( '显示');

答案 2 :(得分:1)

通过angular.element查找元素并隐藏。

var popup = angular.element("#modal-default");
//for hide model
popup.modal('hide');
//for show model
popup.modal('show');

答案 3 :(得分:0)

为了修复你的例子,我创建了一个服务,它将打开模态并将其附加到外部控制器和模态控制器。我不得不从模态中删除“模态”类,因为它上面有display:none属性。 Here是一个小提琴,展示了我的所作所为。但是,@ mgiesa的答案更好。