我正在使用这个 owl.carousel 指令, 我的应用程序的想法是在用户单击每个项目时获取项目列表,我打开一个模式,根据 id 显示项目列表。 当我第一次单击第一个项目时,轮播正确显示,之后我关闭模式并单击第二个项目,轮播失败。
这是我的代码:
$scope.item_click = function(id){
ServGetItemsById.servicioGetItemsById(id).success(function(data, status){
$scope.all_items = data.items;
var modal = document.getElementById('modal');
modal.style.display = "block";
})
.error(function(data, status){
})
.finally(function(){})
}
我的网页
<data-owl-carousel class="owl-carousel" data-options="owlOptionsTestimonials">
<div owl-carousel-item="" ng-repeat="i in all_items" class="item">
<img src="{{i.img}}"/>
<div>
<p class="white-text center">{{i.name}}</p>
</div>
</div>
</data-owl-carousel>
提前致谢
我无法让该指令工作。我猜也许一些角度缓存即使在 initCarousel 反复触发时也能保持元素的活动。也许一些旧版本的 angular 没有这个问题?
无论如何,您始终可以删除该元素并强制指令创建一个新元素。ng-if
救援:
<div ng-if="all_items.length > 0">
<data-owl-carousel class="owl-carousel" data-options="owlOptionsTestimonials">
<div owl-carousel-item="" ng-repeat="i in all_items" class="item">
...
</div>
</data-owl-carousel>
</div>
并在控制器中。
// Remove items before fetching new ones to triggers the ng-if.
$scope.all_items = [];
ServGetItemsById.servicioGetItemsById(id).success(function(data, status){
...
恕我直言,这违背了该指令的目的,但你怎么做,嗯? 哦,这次我确实试过了!http://jsfiddle.net/k988Loru/