使用AngularJS循环遍历元素

Kas*_*ars 2 javascript angularjs

我使用AngularJS创建了一个幻灯片应用程序,它使用由特定标签过滤的Instagram照片.这是演示GitHub回购.

根据AngularJS的原理,循环这些图像的最有效方法是什么?

目前我使用a $timeout将第一个元素移动到images数组底部并与CSS结合使用,除了第一个之外,它隐藏了所有其他图像:

$scope.images = [
    'image-001.jpg',
    'image-002.jpg',
    'image-003.jpg'
];

$timeout( function advanceSlide() {
    $scope.images.push( $scope.images.shift() );
    $timeout( advanceSlide, 6000 );
);
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/YruT6/1/

另一个选择是遍历photos对象并应用一个active类,如此处所示.这会减少资源密集吗?

pko*_*rce 5

您的解决方案工作正常,但使用转发器可能不是最佳策略:

  • 所有图像都会一直在DOM中
  • 使用转发器和操作数组将导致转发器重新计算和DOM重新洗牌.

因此,对于更大的幻灯片放映,您将在DOM中拥有许多元素以及频繁/慢速DOM操作.我可以提出另一种方法:

$scope.imgIndex = 0;
$timeout(function advanceSlide() {
    $scope.imgIndex = ($scope.imgIndex + 1) % $scope.images.length; 
    $timeout(advanceSlide, 1000);
});
Run Code Online (Sandbox Code Playgroud)

然后在模板中:

<div ng-app ng-controller="slideshow">
    <img ng-src="{{images[imgIndex].src}}">
</div>?
Run Code Online (Sandbox Code Playgroud)

这是一个jsFiddle:http://jsfiddle.net/ThmeZ/6/