【发布时间】:2015-01-16 16:33:43
【问题描述】:
<div class="owl-carousel">
<div ng-repeat="items in itemlist">
<a href="series.html"><img ng-src="{{items.imageUrl}}" /></a>
</div>
<div>
<a href="series.html"><img src="http://placehold.it/350x150" /></a>
</div>
</div>
在此处查看轮播:Owl-carousel2
我遇到了一个问题,每当将 ng-repeat 指令应用于轮播时,项目都会垂直堆叠而不是水平布局。
如果我省略 ng-repeat 并使用静态项目,那么它应该可以正常工作。
是否有我可以编写并应用于 owl-carousel 以维护布局的指令?
还有 ng-repeat 导致轮播中断的原因是什么?
Angular 是否以某种方式剥离了应用于轮播的 owl-carousel 类?
注意* 如果手动构建列表,则使用 :
遍历并附加元素var div = document.createElement('div');
var anchor = document.createElement('a');
var img = document.createElement('img');
.....
carousel.appendChild(div);
然后调用 owl.owlCarousel({..}) 它可以工作,不确定这是否是最好的解决方法,因为 ng-repeat 让一切变得更容易。
我发现了一个 hack,如果我将 owl init 包裹在超时中,那么 ng-repat 就可以工作了。
setTimeout(function(){
...call owl init now
},1000);
<link rel="stylesheet" href="css/owl.carousel.css"/>
<link rel="stylesheet" href="css/owl.theme.default.min.css"/>
.....
<script src="/js/lib/owl.carousel.min.js"></script>
<script>
$(document).ready(function() {
var owl = $('.owl-carousel');
owl.owlCarousel({
.....
});
owl.on('mousewheel', '.owl-stage', function(e) {
if (e.deltaY > 0) {
owl.trigger('next.owl');
} else {
owl.trigger('prev.owl');
}
e.preventDefault();
});
})
</script>
【问题讨论】:
-
你用什么代码来加载猫头鹰轮播?这几乎可以肯定是一个加载顺序问题。即 ng-repeat 在 owl carousel 从中构建 carousel 之前没有操纵 DOM。
-
@rwacarter 查看我上面添加的内容
-
@rwcarter 如果这确实是问题,我该如何解决?
-
我是否应该构建我的列表,然后在填充列表后调用 owl-carousel build?
-
setTimeout(function(){ ...call owl init now },1000);加载列表后的技巧
标签: javascript angularjs angularjs-directive owl-carousel