Javascript 单击外部模式窗口时重置引导模式

Javascript 单击外部模式窗口时重置引导模式,javascript,twitter-bootstrap,bootstrap-modal,Javascript,Twitter Bootstrap,Bootstrap Modal,每当用户在模式窗口外单击以关闭而不是按下关闭按钮时,我在重置引导模式时遇到一些问题。每当模式窗口未正确重置时,我的datetimepicker就会停止工作 无论何时打开,我的modal都应该这样做: 但如果我在关闭窗口后点击模态窗口外的灰色区域打开窗口,就会发生这种情况: 每当我使用Avbryt(disclose)按钮解除时,它都可以正常工作。 我没有得到任何错误,这是我使用的代码为我的模态 $scope.show = function() { ModalService.showMo

每当用户在模式窗口外单击以关闭而不是按下关闭按钮时,我在重置引导模式时遇到一些问题。每当模式窗口未正确重置时,我的datetimepicker就会停止工作

无论何时打开,我的modal都应该这样做:

但如果我在关闭窗口后点击模态窗口外的灰色区域打开窗口,就会发生这种情况:

每当我使用
Avbryt
(disclose)按钮解除时,它都可以正常工作。 我没有得到任何错误,这是我使用的代码为我的模态

$scope.show = function() {
    ModalService.showModal({
            templateUrl: 'newProject.html',
            controller: "NewProjectModalController"
        }).then(function(modal) {
            modal.element.modal();
            modal.close.then(function(result) {
                $('#newProjectModal').modal('hide');
                $('body').removeClass('modal-open');
                $('.modal-backdrop').remove();
            }
        });
    });
}
$scope.dismiss = function () {
    close(false, 500)
}
可以在上找到模式服务

我发现触发关闭的并不是背景,而是模态窗口的边缘。如果我击中小广场内模态的外部,它将被忽略,但如果我击中外部背景,则不会


当用户单击模式背景时,尝试在Avbryt按钮上触发单击事件。大概是这样的:

$('.modal-backdrop').click(function(){
  $('.avbryt').trigger('click');
});
这应该绕过根本问题


参考:

根据相关图片,您在项目中使用的是angular modal服务和bootstrap.js。所以我搜索了它的github回购协议,发现了这个问题:

根据那里的评论,您应该按以下方式更改代码:

ModalService.showModal({
        templateUrl: 'newProject.html',
        controller: "NewProjectModalController"
    }).then(function(modal) {
        modal.element.modal();
        modal.close.then(function(result) {
            $('#newProjectModal').modal('hide');
            $('body').removeClass('modal-open');
            $('.modal-backdrop').remove();
        }
        // added by me
        modal.element.on('hidden.bs.modal', function () {// bootstrap event
            modal.scope.close(false,500);
        });
    });
});

介意显示
ModalService
的代码吗?这里的代码太少了。如果下面的答案无效,请发布更多代码。(例如,
close
的定义)@Pytth添加了ModalService的代码。还为问题添加了一个小的更新。我还注意到,在模式窗口外单击不会删除上一个窗口,而“取消”按钮会删除上一个窗口。这可能就是日历失败的原因,因为有多个ID。我更新了我的问题,因为我注意到你的代码有问题。模态解除实际上是由模态窗口外部但模态类内部的单击触发的,而不是由背景单击触发的。我还注意到,在模式窗口外单击不会删除上一个窗口,只会隐藏它。但是“驳回”按钮会删除它。谢谢你发现了一个类似的问题,我已经试了很久了。但是我得到了
未捕获的TypeError:modal.scope.close不是一个函数
,知道吗?更新:Nevermind,问题解决了,刚刚输入了模态范围标识符,这可能就是您所需要的。非常感谢。很抱歉代码不起作用,但我已经在angular modal服务的官方JSFIDLE中尝试过了。这可能是由于您的代码和它之间的差异造成的@PhyCoMathSee更新的评论:)有效,只需更改范围:)精细:D@PhyCoMath