2016-12-06 50 views
1

下午好球員,Angularjs消化週期鎖定滾動

,我有以下問題,我有一個引用四個部分HTML中的同一個屏幕上的導航選項卡。這些部分根據活動選項卡獲得顯示塊或顯示無,每個選項卡都有不同的內容,通過ajax已經在後臺加載,直到ai一切正常,問題是當我在選項卡之間導航時,有不同大小的框高度,顯然Angularjs的消化週期需要承認這個調整大小,頁面的滾動被鎖定,直到它檢測到新的高度,有人對我如何着手解決這個問題有任何想法,我正在使用IONIC FRAMEWORK。

下面是顯示內容框如何,記住,只有一個是可見的,在一個時間內進行拍攝,當我看着網頁我注意到鎖定在style =" transform: translate3d (0px, 0px, 0px) Scale (1);

enter image description here

回答

1
發生

經過幾次嘗試之後,我將這個bug留在一邊,轉到其他函數,並且在控制標籤的指令中進行更正時,我注意到一旦加載了新標籤,我就可以重新計算滾動大小。添加以下行單擊函數:

$ionicScrollDelegate.resize(); //Fix box resize bug when trasition between tabs 

功能去如此:

$timeout(function() { 
    childElem = angular.element(document.querySelector(".child")).prop('children'); 
    if(childElem.length){ 
     for (var i = 0; i < childElem.length; i++) { 
     angular.element(childElem[i]).on('click', function (e) { 
      var tab = angular.element(e.path ? e.path[0] : e.target).prop('id').replace(/tab/g, ""); 
      $rootScope.$emit('aba_ativa_feed', tab); // informa a view feed qual a aba ativa 
      for (var i = 0; i < tabs.length; i++) { 
      if(i == tab - 1) { 
       ativos[i] = true; 
      } else { 
       ativos[i] = false; 
       angular.element(document.querySelector("#tab-nav-block-id-".concat(i+1))).addClass('ng-hide'); 
      } 
      } 
      angular.element(document.querySelector("#tab-nav-block-id-".concat(tab))).removeClass('ng-hide'); 
      $ionicScrollDelegate.scrollTo(0, blocksScrollPosition[tab - 1], true); 
      scope.active = ativos; 
      scope.$apply(); 
      $ionicScrollDelegate.resize(); //Fix box resize bug when trasition between tabs 
     }) 
     } 
    } 
    }, 200) 

更多細節看here