代码之家  ›  专栏  ›  技术社区  ›  Danyx

jquery slick宽度扩展太多[重复]

  •  0
  • Danyx  · 技术社区  · 6 年前

    我正在使用 Slick 我的一个转盘 AngularJS 应用程序。为此,我创建了如下指令:

      myApp.directive('slickSlider',function(){
       return {
         restrict: 'A',
         link: function(scope,element,attrs) {
           $(element).slick(scope.$eval(attrs.slickSlider));
       }
      }
     }); 
    

    这是我在视图文件中的代码:

      <div class="clearfix"  
      slick-slider="{dots: false, arrows: true, draggable: 
      false, slidesToShow:3, infinite:false}">
                  <div class="my-slide">
                      <a><img ng-src="assets/img/img1.png"/></a>
                  </div>
                  <div class="my-slide">
                      <a><img ng-src="assets/img/img1.png"/></a>
                  </div>
                  <div class="my-slide">
                      <a><img ng-src="assets/img/img1.png"/></a>
                  </div>
                  <div class="my-slide">
                      <a><img ng-src="assets/img/img1.png"/></a>
                  </div>
                  <div class="my-slide">
                      <a><img ng-src="assets/img/img1.png"/></a>
                  </div>
                  <div class="my-slide">
                      <a><img ng-src="assets/img/img1.png"/></a>
                  </div>
        </div>
    

    在这种情况下,它可以正常工作并正确初始化。

    但是当我使用 ngRepeat ,它没有初始化,而是一张接一张地显示幻灯片。

    这是我的代码使用 Ng重复

    <div class="clearfix"  
      slick-slider="{dots: false, arrows: true, draggable: 
      false, slidesToShow:3, infinite:false}">
          <div class="my-slide" ng-repeat="slide in slides">
             <a><img ng-src="assets/img/{{slide.img}}"/></a>
           </div>
     </div>
    

    有什么建议,我怎么解决?

    0 回复  |  直到 8 年前
        1
  •  20
  •   Michael Kang    10 年前

    myApp.directive('slickSlider',function($timeout){
     return {
       restrict: 'A',
       link: function(scope,element,attrs) {
         $timeout(function() {
             $(element).slick(scope.$eval(attrs.slickSlider));
         });
       }
     }
    }); 
    
        2
  •  11
  •   Community Egal    7 年前

    app.directive('slickSlider', function () {
        return {
            restrict: 'A',
            scope: {'data': '='},
            link: function (scope, element, attrs) {
                var isInitialized = false;
                scope.$watch('data', function(newVal, oldVal) {
                    if (newVal.length > 0 && !isInitialized) {
                        $(element).slick(scope.$eval(attrs.slickSlider));
                        isInitialized = true;
                    }
                });
            }
        }
    });
    

    this great answer

    <div class="clearfix" data="slides" 
        slick-slider="{dots: false,
                       arrows: true,
                       draggable: false,
                       slidesToShow:3,
                       infinite:false}">
        <div class="my-slide" ng-repeat="slide in slides">
            <a><img ng-src="assets/img/{{slide.img}}"/></a>
        </div>
    </div>
    

    this so answer this github 我从那里得到的 this so question