带有 Angular JS 的光滑轮播
[英] Slick Carousel with Angular JS
本文介绍了带有 Angular JS 的光滑轮播的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在我的一个 Slick carousel.org/" rel="noreferrer">AngularJS 应用程序.为此,我创建了如下指令:
myApp.directive('slickSlider',function(){返回 {限制:'A',链接:功能(范围,元素,属性){$(element).slick(scope.$eval(attrs.slickSlider));}}});
这是我在视图文件中的代码:
<div class="my-slide"><a><img ng-src="assets/img/img1.png"/></a>
<div class="my-slide"><a><img ng-src="assets/img/img1.png"/></a>
<div class="my-slide"><a><img ng-src="assets/img/img1.png"/></a>
<div class="my-slide"><a><img ng-src="assets/img/img1.png"/></a>
<div class="my-slide"><a><img ng-src="assets/img/img1.png"/></a>
<div class="my-slide"><a><img ng-src="assets/img/img1.png"/></a>
在这种情况下,它工作正常并正确初始化.
但是当我使用 ngRepeat 动态创建幻灯片时,它不会初始化并且一张接一张地显示幻灯片.
这是我使用 ngRepeat
的代码<div class="my-slide" ng-repeat="幻灯片中的幻灯片"><a><img ng-src="assets/img/{{slide.img}}"/></a>
任何建议,我该如何解决?
解决方案
我怀疑 slick 插件可能需要完全渲染 DOM 才能正常工作.
试试:
myApp.directive('slickSlider',function($timeout){返回 {限制:'A',链接:功能(范围,元素,属性){$超时(功能(){$(element).slick(scope.$eval(attrs.slickSlider));});}}});
I am using Slick carousel in one of my AngularJS application. For that I have created directive as follows:
myApp.directive('slickSlider',function(){
return {
restrict: 'A',
link: function(scope,element,attrs) {
$(element).slick(scope.$eval(attrs.slickSlider));
}
}
});
Here is my code in view file:
<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>
In this case it is working fine and initializing properly.
But when I creates slides dynamically using ngRepeat, it is not initializing and shows slides one after the other.
Here is my code using ngRepeat
<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>
Any suggestion, how can I resolve it?
解决方案
I suspect that the slick plugin may need the DOM to be fully rendered to work properly.
Try:
myApp.directive('slickSlider',function($timeout){
return {
restrict: 'A',
link: function(scope,element,attrs) {
$timeout(function() {
$(element).slick(scope.$eval(attrs.slickSlider));
});
}
}
});
这篇关于带有 Angular JS 的光滑轮播的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文