angular中的Slick Js,页面渲染后如何调用?

Slickjs in angular, how to invoke after the page renders?

我一直在尽我所能在互联网上找到它,Whosebug 是我现在最后的希望!

我正在尝试在我的 angular 应用程序中使用 SlickJs 轮播。问题是,我需要在呈现页面内容后调用 slick() 函数,这样该函数才能真正起作用。

如果我在页面上有一个按钮,它将 运行 ng-click 上的“slick()”功能,它会工作正常(所以功能在那里),但这显然是不是您希望旋转木马如何工作,具体取决于单击按钮。您希望它自动加载。

我已经尝试了很多东西,包括创建一个像这样的具有 link 功能的指令:

app.directive('ngGallery', function(){
    return {
        restrict: 'E',
        scope: {
            items: '=items'
        },
        templateUrl: 'app/directives/templates/galleryTmp.html',
        link: function($scope, $elem, attrs){   
            angular.element(".slick").slick({
                arrows: false,
                dots: true,
                mobileFirst: true,
             });
        }
    }
});

使用模板:

<div class="slick" style="width:600px; max-width:98%; height:auto; margin:0 auto;">
    <div ng-repeat="c in items" style="text-align:center;">
        <img ng-src="{{c.Url}}" style="width:100%; height:auto;" />
        <br />
        <i>{{c.Text}}</i>
    </div>
</div>

无论我做什么,我总是以模板内容呈现为普通 HTML 而不是轮播。对此有什么想法吗?

您应该对 slick-carousel http://vasyabigi.github.io/angular-slick/ 使用 Angular 指令。我以前用过,效果很好。您可以使用 slick carousel 的所有设置。就像这个例子:

模板:

<slick dots="true" responsive="breakpoints" infinite="true" init-onload="init-onload" data="mainSlide" arrows="arrows" class="big-slider"><img src="{{slide.image}}" class="hidden imgPreloader"/>
    <div ng-show="dataLoaded" style="background-image: url({{slide.image}})" ng-repeat="slide in mainSlide" class="slide-item">
      <div class="text-container">
        <div class="text">
          <h2>{{slide.title}}</h2>
          <p class="hidden-xs">{{slide.text}}</p>
        </div>
      </div>
    </div>
  </slick>

控制器:

$scope.dataLoaded = false;
    // Main Slide
    var MainSlide = $resource('api/home-slider');

    MainSlide.query(function(data){
        $scope.mainSlide = data; 
        $scope.dataLoaded = true;
    });

    $scope.breakpoints = [
      {
          breakpoint: 1025,
          settings: {
              arrows: false,
              slidesToShow: 2,
          }
      },
      {
          breakpoint: 550,
          settings: {
              arrows: false,
              slidesToShow: 1,          
          }
      }
    ];