2017-02-09 35 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