Я строю слайдер с AngularJs, используя директиву, но теперь у меня есть проблема. Это код моего home.htmlAngularjs: event preload background image
<div class="loading" ng-hide="$root.showSlider">
<div class="logo">
<img class="" ng-src="./img/logo.png">
</div>
</div>
<slider-directive images="images" ng-show="$root.showSlider" ng-if="images"/>
Теперь я показать фрагмент кода контроллера:
.controller("HomeController",["$scope","$rootScope", function($scope, $rootScope) {
(function getData() {
//do async call that return data
$scope.images = data;
}, function(err) {
console.log(err);
});
})();
}
]);
И теперь я могу показать код моей директивы:
.directive('sliderDirective', function($rootScope, $interval) {
return {
restrict: 'E',
templateUrl: 'html/.../slider.html',
replace: true,
scope: {
images: '='
},
link: function(scope, element, attrs) {
scope.currentIndex = 0;
scope.next = function() {
scope.currentIndex < scope.images.length - 1 ? scope.currentIndex++ : scope.currentIndex = 0;
};
scope.prev = function() {
scope.currentIndex > 0 ? scope.currentIndex-- : scope.currentIndex = scope.images.length - 1;
};
scope.$watch('currentIndex', function() {
scope.images.forEach(function(image) {
image.visible = false; // make every image invisible
});
scope.images[scope.currentIndex].visible = true; // make the current image visible
$rootScope.showSlider = true;
});
$interval(function() {
scope.next();
}, 10000);
}
};
});
сейчас моя проблема заключается в том, что загружаются изображения в фоновом режиме, которые находятся в слайдере, поэтому я могу удалить загрузку и показать слайдер без плохих результатов. Есть ли способ, который скажет мне, когда загружаются все изображения или первое изображение? спасибо
ОК, мне нравится последний ответ ссылки, но как я могу получить элементы img в директиве для присоединения к событию «load»? Изображения в директиве находятся в un ng-repeat. – Ragnarr
Я предоставил некоторый код, чтобы показать, как эта директива может использоваться в вашем случае – PJDev