2017-01-25 53 views
0

我試圖達到類似全屏模式功能的東西:使用按鈕來觸發全屏模式,然後再返回一個按鈕。什麼時候ng-class結束表達式評估並應用這個類?

主題:

<div ng-class="{full: !presentationMode}"> 
    <div id="child-div>content</div> //div has 100% height 
</div> 

觸發: <button ng-click="present()">Click me!</button>

和Controller我:

$scope.present =() => { 
      $scope.presentationMode = !$scope.presentationMode; 
      var myDiv = angular.element('#container'); 

      // when $scope.presentationMode is true 
      // myDiv.height() is not the height set by the "full" class, but it is always reversed (the previous value) 

      // It !sometimes! work if I use $timeout. 
} 

我應該如何處理這種情況?

這裏有一個小提琴:https://jsfiddle.net/U3pVM/29641/

回答

2

你有一個語法:

<div ng-class="{full: !presentationMode}">

你應該有你的類名稱 ''

<div ng-class="{'full': !presentationMode}">

+1

沒有幫助。不要緊,如果類名不包含破折號! – cristifilip

0

實際上似乎有是範圍摘要循環問題:我正在嘗試在類w之前訪問div的高度作爲應用,所以這就是爲什麼我總是得到以前(高度)的價值。

解決的辦法是讓div的高度在$ timeout的函數內部,沒有任何延遲,但invokeApply設置爲false(默認爲true)。

$timeout(function() { 
    console.log(myDiv.height()); //has correct value 
}, 0, false); 
相關問題