Echemos un vistazo a las representaciones primero
De hecho, escribir una imagen de carrusel es bastante simple. Pensé en dos formas de implementar una imagen de carrusel (de hecho, hay 5 subdivisiones, pero dos de ellas son nativas del DOM, y las tres son animaciones que usan AngularJS, todas clasificadas en dos categorías). Cuando lo escribo, todos pueden entenderlo con cuidado.
Entonces escribiré uno primero. El primero es no usar el módulo de animación AngularJS, y solo usar instrucciones para completar la conmutación de animación. Aquí, es operar el elemento DOM en el comando, que es súper fácil.
Código de muestra
<! DocType html> <html lang = "en" ng-app = "lunbo"> <head> <meta charset = "utf-8"> <script src = "lib/angular.min.js" type = "text/javascript"> </script> <script src = "leb/angular-animular.js" type = "text/javaScript"> </script> <script src = "lib/angular-animular.js" type = "text/javaScript"> </script> <script src = "lib/angular-animular.js" type = "text/jaxcript"> </script> <script src = "lib/angular-animal.js" type = "text/javaScrito <title> </title> <style> .hidden {display: none; } .Active {Display: Block; } </style></head><body ng-controller="lunboController"> <div lunbo >/div> <script type="text/ng-template" id="lunbo.html"> <ul> <li ng-repeat="img in images" > <a href="{{img.href}}"><img src = "{{img.src}}"/> </a> </li> </script> </body> <script> var app = angular.module ('lunbo', ['nganimate']); app.controller ('lunbocontroller', ['$ scope', 'readjson', function ($ scope, readjson) {}]); app.factory ('readjson', ['$ http', '$ q', function ($ http, $ q) {return {query: function () {var deferred = $ q.defer (); $ http ({método: 'get', url: 'img.json'}). succent (function (data, status, header, config) {deferredeRed). }). Error (función (datos, estado, encabezado, config) {Deferred.reject (data);}); app.directive ('lunbo', ['readjson', function (readjson) {return {restrict: 'ea', templateUrl: 'lunbo.html', scope: {}, link: function (scope, element, attr) {var promety = readEdSton.Query (); var step = 0; scope.flag = false; console.log (data); }, 1000)}}}]); /*App.animation('.fade-in ', function () {return {Enter: function (element, done) {}}})*/</script> </html> [{"href": "http://www.google.com", "src": "img/5.jpg", "alt": "5"}, {"href": "http://www.google.com", "src": "img/6.jpg", "alt": "6"},}, {{},}, {{{{{{ "href": "http://www.google.com", "src": "img/8.jpg", "alt": "8"}, {"href": "http://www.google.com", "src": "img/8.jpg", "alt": "8"}, { "href": "http://www.google.com", "src": "img/8.jpg", "alt": "8"}, {"href": "http://www.google.com", "src": "img/9.jpg", "alt": "9"}]] Es fácil ver si la instrucción termina. Se realiza llamando a la función jQuery encapsulada por AngularJS mismo llamando element en la función de enlace de la instrucción.
Otro es
enlace: function (scope, element, attr) {var promise = readjson.query (); Paso var = 0; scope.flag = false; promet.then (function (data) {console.log (data); scope.images = data;}); setInterval (function () {element.find ("li"). removeClass ("acitve"); step ++; step = step%5; element.find ("li"). eq (step) .addclass ("activo");}, 1000)}}}}} Si desea hacer efectos de transición, puede agregar animación de transición CSS3 a acive .
Esto utiliza $http y $q para implementar una extracción de datos asíncronos retrasados. Al combinar funciones de esta manera, la función de la función puede ser más robusta y más conveniente para monitorear las funciones. Pasaré tiempo explicando el contenido de $q y jQuery de Angularjs y $Deferred . De hecho, los principios son similares y ambos implementan operaciones promise .
La dificultad de implementar JavaScript es cómo aumentar y disminuir los elementos para desencadenar el efecto de animación de AngularJS. Escribí uno esta vez, pero hubo un pequeño defecto cuando comencé a correr, es decir, el tamaño del paso del botón pequeño debe agregarse a 1 para sincronizar con la foto. No sé cómo fue causado, así que llenaré el pozo en el futuro. Si hay algún punto inapropiado, por favor, apúrelo.
Hay otra forma de escribir, que no recomiendo mucho. Aunque es fácil de escribir, explicaré brevemente la idea, que es crear una matriz para almacenar SRC y otra información de imágenes. Cada vez, saca uno de él, átelo al SRC de IMG en dos vías. Ahora lea IMG, y cuando se trata del siguiente, borre el SRC de IMG y asigne el siguiente. Con este bucle, aunque se pueden lograr carruseles, esto aumenta en gran medida el número de solicitudes HTTP. En el caso de la baja velocidad de la red, la experiencia es muy mala y no la recomiendo.
Recomiendo encarecidamente esta forma de escribir. Aunque soy un poco detallado, tengo una buena experiencia.
<! DocType html> <html lang = "en" ng-app = "lunbo"> <head> <meta charset = "utf-8"> <script src = "lib/angular.min.js" type = "text/javascript"> </script> <script src = "leb/angular-animular.js" type = "text/javaScript"> </script> <script src = "lib/angular-animular.js" type = "text/javaScript"> </script> <script src = "lib/angular-animular.js" type = "text/jaxcript"> </script> <script src = "lib/angular-animal.js" type = "text/javaScrito <title> </title> <style> *{relleno: 0px; margen: 0px; } div {posición: relativo; } div ul {posición: absoluto; } div ul li {tipo list-estilo: ninguno; Posición: Absoluto; } div ul li a img {display: block; Ancho: 730px; Altura: 454px; } div ul.listContent {posición: absoluto; Izquierda: 500px; Arriba: 410px; Ancho: 200px; Altura: 25px; } div ul.listContent li.list {posición: relativo; Pantalla: bloque; Ancho: 25px; Altura: 25px; flotante: izquierda; margen: 0 5px; borde: 1px azul sólido; Text-Align: Center; Línea de altura: 25px; cursor: puntero; } .Active {fondo: #161616; Color: #ffffff; } </style> </head> <body ng-concontroller = "lunbocontroller"> <div lunbo> </div> <script type = "text/ng-template" id = "lunbo.html"> <div-ng-mouseave = "inicio ()"> <ult-switch = "pic"> <li ng-switch-witch-when " href = "{{{img1.href}}"> <img src = "{{img1.src}}}"/> </a> </li> <li ng-switch-when = "1"> <a href = "{{img2.href}}"> <img src = "{{img2.src}}"/> </a> </li> <li ng-switch-when = "2"> <a href = "{{img3.href}}"> <img src = "{{{img3.href}}"/> </a> <//li> ng-s href = "{{img4.href}}"> <img src = "{{img4.src}}"/> </a> </li> <li ng-switch-when = "4"> <a href = "{{img5.href}}"> <img src = "{{IMG5.Src}}"/> </a> </li> </ul> <ul> <li ng-Click = "clickevent (0)"> 1 </li> <li ng-ckick = "clickevent (1)"> 2 </li> <li ng-click = "clicevent (2)"> 3 </li> <li> <li> ng-chick = "clicKevent (3)"> 4 </li> <li ng-click = "clicKevent (4)"> 5 </li> </ul> </div> </script> </body> <script> var app = angular.module ('lunbo', ['nganiMe']); app.controller ('lunbocontroller', ['$ scope', 'readjson', 'mouseEvent', function ($ scope, readjson, mouseEvent) {}]); app.factory ('readjson', ['$ http', '$ q', function ($ http, $ q) {return {query: function () {var deferred = $ q.defer (); $ http ({método: 'get', url: 'img.json'}). succent (function (data, status, header, config) {deferredeRed). }). Error (función (datos, estado, encabezado, config) {Deferred.reject (data);}); /* Hay un problema con este servicio y necesita mejorar. Todavía no pensé en una solución*/ app.factory ('mouseEvent', function () {return {mouseEvent: function (ELE1, ELE2, EVENT, ENVIADA) {}}}); app.directive ('lunbo', ['readjson', '$ timeOut', 'mouseEvent', function (readjson, $ timeOut, mouseEvent) {return {restrict: 'ea', templateUrl: 'lunbo.html', scope: {}, link: function (scope, element, attr) {var promise = readjson.Qreery (); TIME = NULL; elemento.find ("li"). element.find ("li"). }]); app.animation ('. fade-in', function () {return {Enter: function (element, done) {var step = 0; var time = null; // timer var animationFunc = function () {step+= 20; if (step> 100) {done (); clearinterval (time);} else {element.css ("opacity", Step/100);}}; element.css ("Opacidad", 0); element.css ("opacidad", 1);Resumir
Lo anterior es todo el contenido de este artículo. Espero que sea de ayuda para el estudio y el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse.