2015-01-14 33 views
1

我想獲得一個元素的高度,當鼠標懸停在一個按鈕上時會出現這個元素。角度ng顯示回調

示例代碼:

<div ng-mouseenter="mouseoverPopUp()" ng-mouseleave="showpop=false">menu</div> 
<div class="popover" ng-show="showpop">{{content}}</div> 

$scope.mouseoverPopUp = function($event){ 
    $scope.showpop = true; 
    var height = angular.element(".popover").innerHeight(); 
}; 

的問題是有時元件的高度正在得到它時,會出現之前。無論如何,我可以運行的代碼只有ng-show有顯示元素?我需要在看起來調整元素的位置後立即獲得高度。

+0

只是一種猜測你嘗試看showpop而不是監聽鼠標懸停? –

+0

@BorisCharpentier我怎麼看showpop?這意味着當變量變化時,元素已經出現了嗎? – user1995781

+0

我會建議你爲此做一個指令.. – Ved

回答

0

您是否嘗試過使用$ timeout調用中的代碼,以便在角度完成後延遲執行JS?

$scope.mouseover = function($event){ 
    $timeout(function() { 
     var height = angular.element(".popover").innerHeight(); 
    }); 
}; 

你是如何顯示你的popover?用css過渡?如果是這樣,你需要相應地延遲你的JS代碼檢索高度。或者你可以使用角動畫綁定事件有更多的邏輯

PS:幫助更多的,一個的jsfiddle將是巨大的

+0

感謝您的回答。但我不喜歡'超時'的方式來延遲代碼執行。如果你能演示一個例子如何使用angular-animate進行回調,那將會很好。 – user1995781