2017-02-09 89 views
0

我的项目中有一个md对话框出现问题。需要帮助来优化无法正常工作的角度的clickOutsideToClose

在所有项目对话框中,只有一个具有在关闭时关闭的功能,剩下的项目被锁定。我可以通过在代码中插入clickOutsideToClose: false指令来完成锁定。

$mdDialog.show({ 
    controller: 'sascarReportAddonsModal', 
    templateUrl: 'infra/template/sascar-report-addons/sascar-report-addons-modal.html', 
    bindToController: true, 
    parent: angular.element(document.body), 
    targetEvent: ev, 
    locals: { 
     previousModal: vm.showSideDialog, 
     selectedIndex: selectedIndex 
    }, 
    clickOutsideToClose:true, 
    fullscreen: false 
}); 

但在指令为clickOutsideToClose: true的对话框中不起作用。我能够通过在对话框控制器将此代码添加到解决此问题:

$timeout(callAtTimeout, 3000); 
function callAtTimeout() { 
    angular.element(document).find("md-backdrop").on('click', function() { 
     closeDialog(); 
    }); 
} 

我的问题是,我怎么能做出这样的代码更好地不使用超时。只有在对话框完成加载后才会加载angular.element(document).find("md-backdrop").on('click', function() { closeDialog();});

回答

0

尝试简化了对话,下面的代码,看看是否有所帮助:

$mdDialog.show({ 
    controller: 'sascarReportAddonsModal', 
    templateUrl: 'infra/template/sascar-report-addons/sascar-report-addons- 
    modal.html', 
    clickOutsideToClose: true, 
}) 

编辑:

$scope.$apply(function() { 
    angular.element(document).find("md-backdrop").on('click', function() { 
    closeDialog();}); 
}); 
+0

的问题是,我需要通过所有其他信息,以及超时加工。 我只想给它一个优化的,所以它不会太糟糕在代码 – danielvilha

+0

我已经添加了一个稍短的方法,您可以使用实施$应用而不是$超时,这应该做的伎俩。 –

+0

太棒了,完美无缺。非常感谢。 – danielvilha