ng-repeat 中的多个 bxslider 实例

Multiple Instances of bxslider inside ng-repeat

由于 ng-repeat 问题,我创建了加载 bxslider 的指令。 问题:由于 ng-repeat 指令生成了多个 bxslider 实例。

当我试图将 div 包装在另一个 ng-repeat 中时,我得到了多个 bxslider 实例,一个一个地创建。

JSFIDDLE:http://jsfiddle.net/z27fJ/15/

APP.JS

var app = angular.module('myApp', []);

app.directive('startslider',function() {
return {
   restrict: 'A',
   replace: true,
   template: '<ul class="bxslider">' +
               '<li ng-repeat="picture in pictures">' +
                 '<img ng-src="{{picture.src}}" alt="" />' +
               '</li>' +
              '</ul>',
   link: function(scope, elm, attrs) {
      elm.ready(function() {    
           $("." + $(elm[0]).attr('class')).bxSlider({
                mode: 'fade',
                autoControls: true,
                slideWidth: 360,
                slideHeight:600
        });

      });
     }
   }; 
});

app.controller('MainCtrl', function($scope) {
$scope.base = 'http://bxslider.com';
$scope.pictures = [
   {src: $scope.base + '/images/730_200/hill_fence.jpg' },
   {src: $scope.base + '/images/730_100/tree_root.jpg' },
   {src: $scope.base + '/images/730_150/me_trees.jpg' }
 ];
});

HTML :

<div class="a" ng-repeat="t in [1,2,3]">
    <div startslider></div>
</div>

我曾尝试搜索类似的问题,但没有成功。

非常感谢您的帮助,感谢您的宝贵时间。

您在 link 实例中选择 bxSlider 的方式不正确。我假设选择 class 会生成多个实例。这是使其工作的一种方法:

link: function(scope, elm, attrs)
{
  elm.ready(function()
  {
    $(elm).bxSlider({
      mode: 'fade',
      autoControls: true,
      slideWidth: 360,
      slideHeight:600
    });
  });
}