2017-05-03 77 views
0

我使用狡猾的旋轉木馬來處理angularjs應用程序,但它有一些問題。 其中一個這種情況。在angulars中檢測元素寬度變化指令

當傳送帶改變其大小或加載新數據,其工作與錯誤,所以,現在我有這個指令,我的目標是'續'。

我需要檢測,每次,如果繼續改變他的寬度,然後重新加載狡猾旋轉木馬。 (窗口大小調整工作完全)

BET5.directive('slyHorizontalRepeat', [ 
    '$timeout', 
    function ($timeout) { 
    return { 
     restrict: 'A', 
     link: function (scope, el, attrs) { 

     if (scope.$last === true) { 
      $timeout(function() { 
      var cont = $('#frame') 
      var frame = $(el[0]).parent().parent(); 
      var wrap = $(el[0]).parent().parent().parent(); 
      defaultOptions.horizontal = 1; 
      var defaultControls = { 
       scrollBar: wrap.find('.scrollbar') || null, 
       pagesBar: wrap.find('.pages') || null, 
       forward: wrap.find('.forward') || null, 
       backward: wrap.find('.backward') || null, 
       prev: wrap.find('.prev') || null, 
       next: wrap.find('.next') || null, 
       prevPage: wrap.find('.prevPage') || null, 
       nextPage: wrap.find('.nextPage') || null 
       }; 

      // Merge parts into options object for sly argument 
      var options = $.extend({}, defaultOptions, defaultControls, scope.$eval(attrs.slyOptions)); 
      var callback = scope.$eval(attrs.slyCallback) || function (cb) { 
      }; 

      scope.$watch(cont, function (newTime) { 
       // do something 
      }); 

      $(window).on('resize', function() { 
       frame.sly('reload'); 
       console.log('resize'); 
      }); 

      // Call Sly on frame 
      frame.sly(options, callback()); 
      }); 
     } 
     } 
    }; 
    } 
]); 

回答

1

我認爲這應該工作...

scope.$watch(
    function() {return cont.width()}, 
    function(newValue, oldValue) { 
    if (newValue !== oldValue) { 
     frame.sly('reload'); 
    } 
    } 
); 
+0

Thankss)它的工作! –

+0

除了這個問題,角度狡猾的旋轉木馬還有另外一個問題,當用戶打開另一個旋轉木馬時,新的旋轉木馬會從舊的旋轉木馬中獲得尺寸......我如何在這種情況下初始化狡猾? –

+0

更好地爲此創建一個問題 –