Слайд-шоу в Angularjs не работает должным образом - PullRequest
0 голосов
/ 07 января 2020

Я новичок в использовании angularjs, и я хотел попробовать его, используя его для создания непрерывного слайд-шоу контента. Я смог заставить слайд работать примерно один день, используя для этого автора на этом сайте.

Однако на следующий день я начал над ним работать, и слайд перестал работать. Мои изображения даже не будут отображаться. После игры с кодом я обнаружил, что удаление «ng-app» из тега html позволило изображениям появляться снова, но код все равно не запустился.

Код ниже:

<!DOCTYPE html>
<html  lang="en" ng-app="myApp" ng-controller="AppCtrl as app" >
<head>
<link href="css/test.css" rel="stylesheet">
<script data-require="angular.min.js@1.7.9"src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.9/angular.min.js"></script>
<script src="app.js"></script>
    <style>
     .evt-title {
  position: absolute;
  z-index: 1;
  left: 38%;
  font-family: 'Roboto Slab', sans-serif;
  font-size: 1.75rem;
  top: -15px;
}

.evtslide {
  /*width:100%;
    height:400px;
    margin: 0 auto;
    margin-bottom: 20px;
    overflow:hidden;
    position:relative;*/
  right: 0;
  height: 690px;
  width: 26.7%;
  float: right;
  position: absolute;
  overflow: hidden;
}

.evtslide .slider-content {
  position: absolute;
  width: 100%;
  height: 690px;
  background: url("../images/bluebg2.png");
  background-size: 100%;
  background-repeat: no-repeat;
}

.evtslide .slider-content2 {
  position: absolute;
  width: 100%;
  height: 690px;
  background: url("../images/graybg2.png");
  background-size: 100%;
  background-repeat: no-repeat;
}

.animate-enter, .animate-leave {
  -webkit-transition: 1000ms cubic-bezier(0.165, 0.84, 0.44, 1) all;
  transition: 1000ms cubic-bezier(0.165, 0.84, 0.44, 1) all;
}

.animate-enter {
  left: 100%;
}

.animate-enter.animate-enter-active {
  left: 0;
}

.animate-leave {
  left: 0;
}

.animate-leave.animate-leave-active {
  left: -100%;
}
/*# sourceMappingURL=test.css.map */


 </style

</head>
<body>




<div ng-controller="slideShowController" class="evtslide" ng-switch='slideshow' ng-animate="'animate'">
  <div class="slider-content" ng-switch-when="1">
    <h3 class="evt-title">EVENTS</h3>

  </div>    
  <div class="slider-content2" ng-switch-when="2">
    <h3 class="evt-title">EVENTS</h3>

  </div>
  <div class="slider-content" ng-switch-when="3">
    <h3 class="evt-title">EVENTS</h3>

  </div>        
  <div class="slider-content2" ng-switch-when="4">
    <h3 class="evt-title">EVENTS</h3>

  </div>




 <script>
function slideShowController($scope, $timeout) {
    var slidesInSlideshow = 4;
    var slidesTimeIntervalInMs = 3000; 

    $scope.slideshow = 1;
    var slideTimer =
    $timeout(function interval() {
        $scope.slideshow = ($scope.slideshow % slidesInSlideshow) + 1;
        slideTimer = $timeout(interval, slidesTimeIntervalInMs);
        }, slidesTimeIntervalInMs);
    }

</script>
</body>
</html>

1 Ответ

0 голосов
/ 07 января 2020
<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.9/angular.min.js"></script>
</head>
<body>


<div ng-app="myApp" ng-controller="myCtrl">
 <img src={{slide_image}} />
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $interval) {

  var slide_images = ["image_1.jpeg","image_2.jpeg","image_3.jpeg","image_4.jpeg"]; 
  $scope.slide_image = slide_images[0];
  var i=1;  
  $interval(function () {
    $scope.slide_image = slide_images[i%slide_images.length];
    i++;
  }, 1000);
});
</script>
</body>
</html>

Остальное css
Чтобы сделать больше, например добавить текст, измените анимацию и т.д. c. сделать $scope.slide_images массив объектов со свойствами, которые вы хотите. Каждый объект может содержать свои собственные: изображение, стиль, поведение и т. Д. c Вы можете go сойти с ума с настройкой. Приведенный выше код представлен здесь как demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...