我正在嘗試創建一個服務來管理將在我的應用程序中使用的所有不同彈出窗口模式。到目前爲止,除了每次進入視圖時都能夠更新屏幕上模態的位置,所有的操作都很順利。使用AngularJS創建動態彈出窗口模式
這裏是我的修訂指令
app.directive('skModal', function($window){
return {
restrict:'EA',
link: function(scope, elem, attrs){
var top, left;
scope.$watch(attrs.ngShow, function(newVal){
if(newVal) {
top = ($window.innerHeight - elem.outerHeight())/2;
left = ($window.innerWidth - elem.outerWidth())/2;
elem.css({ 'top': top, 'left': left });
}
});
}
} ;
});
我只是用NG-包括填充祝成模態的任何模板,然後我用$watch
檢查時ngShow
變量被翻轉。問題是,我elem
DOM元素是不是在當時的DOM,所以outerHeight()
和outerWidth()
函數返回0
當你說它不在DOM中 - 它實際上是完全斷開的還是它是「display:none」? – 2014-09-24 22:58:52
對不起,我猜這是在DOM中。它只是'display:none;'..我能夠解決這個問題,而不是使用ng-hide/ng-show,我只是簡單地將左邊和頂端的值更改爲-9999。這種方式元素總是在DOM – 2014-09-24 23:08:18