如何正确关闭Angular $模态

时间:2016-06-08 14:21:31

标签: angularjs twitter-bootstrap

我的HTML中有这个代码调用一个模态:

<button class="btn btn-default" ng-click="myCtrl.someModal()">{{myCtrl.title}}/button>

someModal功能是:

that.someModal = function() {
    var modal = $modal({
        templateUrl: 'some_template.html',
        backdrop: 'static',
        controller: "someCtrl",
        controllerAs: "sCtrl",
            resolve : {
                result : function() {
                    return {
                        cancel : function() {
                            modal.hide();
                        }
                    };
                }
            }
        });
};

然后有一个

(function(){
    var app = angular.module('myModule');
    app.controller("someCtrl", ['Restangular', 'result', function(Restangular, result) {

    that.cancel = function() {
            result.cancel();
        };
    }]);
})();

最后在我的模态中:

<div class="modal-footer">
    <button type="button" data-dismiss="modal" class="btn btn-default" ng-click="sCtrl.cancel()">Close</button>
</div>

有效,但这似乎是错误的做法。

两个问题:

  1. 如何正确关闭模态?
  2. 以上内容在modal.hide()处发出警告,指出The local variable modal may not have been initialized。如何重写以使警告消失?
  3. 注意:代码使用的是angular-strap,而不是angular-ui(这似乎更受欢迎)

2 个答案:

答案 0 :(得分:3)

控制器中的

将方法更改为:

$scope.cancel = function () {
   modalInstance.dismiss('cancel');
};

modalInstance是$ modal.open

返回的引用

doc here: http://angular-ui.github.io/bootstrap/#/modal

答案 1 :(得分:0)

显然,范围内有角度带$hide()。 将data-dismiss="modal" ng-click="$hide()"添加到关闭按钮可以正常工作。

我的错误是我尝试了hide(),因为我用过的教程说不起作用。