div を中央に配置するディレクティブを作成しようとしています。
これまでのところ、私はこのコードを持っています:
app.directive("setcenter", function () {
return {
scope:{
setcenter: '='
},
link: function (scope, element, attrs) {
scope.$watch('setcenter', function (newValue) {
if (newValue == true) {
var width = element.width();
element.css('position', 'absolute');
element.css('top', '80px');
element.css('left', '50%');
element.css('z-index', '200');
element.css('margin-left', '-' + width / 2 + 'px');
}
});
}
}
});
問題は要素の幅です。このディレクティブの要点は、このディレクティブを使用する div には幅が設定されていないということです。このディレクティブで幅を把握し、div を中央に配置したいと考えています。
私が遭遇する問題は、ディレクティブが呼び出されたときに、div の実際の幅がまだわかっていないことです。私の状況でこれを使用すると、div は 800px ですが、ページの読み込みが完了すると、div は 221px になります。
では、div の実際の幅がわかるまで待つにはどうすればよいでしょうか?