2016-07-26 16 views
0

カスタムツールチップ要素を作成しようとしています。新しい作成されたツールチップ要素の高さと幅が必要です。私は常にoffsetHeightとoffsetWidthを0にしています。角度指示文で新しく作成された要素の高さと幅を見つける方法

var tooltip = angular.element('<div ng-style="tooltipStyle"><div class="ng-tooltip-arrow"></div>\n{{content}}</div>'); 
    tooltip.attr({ 
      'class': 'ng-tooltip ' + scope.theme + ' ' + scope.direction 
    }); 
    var tooltipElem = $compile(tooltip)(scope); 
    var height = tooltipElem[0].offsetHeight; <!-- This is always 0 --> 
    element.hover(function() { 
     element.after(tooltipElem); 
    }, function() { 
     tooltipElem.remove(); 
    }); 
+0

さらに詳しい状況が表示されることはありますか?この時点でツールチップがDOMにレンダリングされていますか? – ajmajmajma

+0

はい。ツールチップがDOM上で描画されています。ツールチップの配置時にIS問題が発生します。そのため、作成されたツールチップの幅と高さが必要です。 – Debananda

答えて

0

非常にトリッキーですが可能です!あなたがツールチップを設定したい場合は、最後に、ところで

var height = $tooltipElem.clientHeight; 
    var width = $tooltipElem.clientWidth; 

:高さと幅を取得し、その後

var $tooltipElem = angular.element(tooltipElem)[0]; 

をそして:コンパイル後

、角度要素の周りに再びそれを包みますあなたはこのようにすることができます:

tooltipElem.css({ 
      top: top+'px', 
      left: left+'px' 
    }); 

完全な実例:https://codepen.io/vsmori/pen/GORZdQ