Mari kita lihat rendering terlebih dahulu
Bahkan, menulis gambar korsel cukup sederhana. Saya memikirkan dua cara untuk mengimplementasikan gambar korsel (pada kenyataannya, ada 5 subdivisi, tetapi dua di antaranya adalah asli DOM, dan ketiganya adalah animasi menggunakan AngularJS, semuanya diklasifikasikan ke dalam dua kategori). Ketika saya menuliskannya, semua orang dapat memahaminya dengan cermat.
Lalu saya akan menulis satu terlebih dahulu. Yang pertama adalah tidak menggunakan modul animasi AngularJS, dan hanya menggunakan instruksi untuk menyelesaikan switching animasi. Di sini, itu untuk mengoperasikan elemen DOM dalam perintah, yang sangat mudah.
Kode sampel
<! Doctype html> <html lang = "en" ng-app = "lunbo"> <head> <meta charset = "utf-8"> <script src = "lib/angular.min.js" type = "text/javascript"> </script> <script srcrc = "lib/lib." <title> </iteme> <tyle> .hidden {display: none; } .active {display: block; } </tyle> </head> <body ng-controller = "lunbocontroller"> <div lunbo>/div> <script type = "text/ng-templat" id = "lunbo.html"> <ul> <li ng-repeat = "img in gambar"> <a href = "{{{lI NG-repeat =" IMG in Images "> <a href =" {{{{{{{{{a href = "{{a href =" 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 ditangguhkan = $ q.defer (); $ http ({Method: 'get', url: 'img.json'}). Data ({Method: 'get', URL: 'IMG.JSON'}). }). ERROR (FUNGSI (DATA, STATUS, HEADER, CONFIG) {Deferred.Rect (data);}); app.directive ('lunbo', ['readjson', function (readjson) {return {restrict: 'ea', templateUrl: 'lunbo.html', scope: {}, tautan: fungsi (scope, elemen, attr) {var janji = readjson.query (); var step = 0; scope, scope, attr) {var janji = readjson.query (); var step = 0; scope, scope, attr) {var janji = readjson.Query (); var step = 0; scope, scope, attr) {var janji = readjson.Query (); var step = 0; scope, scope) {var janji = readjson.Query (); var step = 0; scope. Console.log (data); }, 1000)}}}]); /*app.animation('.fade-in ', function () {return {enter: function (elemen, selesai) {}}})*/</script> </html> [{"href": "http://www.google.com", "src": "img/5.jpg", "alt": "5"}, {"href": "http://www.google.com", "src": "iMG/6.JPG", "" "href": "http://www.google.com", "src": "img/8.jpg", "alt": "8"}, {"href": "http://www.google.com", "src": "img/8.jpg", "alt": " "href": "http://www.google.com", "src": "img/8.jpg", "alt": "8"}, {"href": "http://www.google.com", "src": "img/9.jpg", "" " Sangat mudah untuk melihat apakah instruksi berakhir. Ini dilakukan dengan memanggil fungsi jQuery yang dienkapsulasi oleh AngularJS sendiri dengan memanggil objek element dalam fungsi tautan instruksi.
Yang lainnya adalah
link: function (scope, element, attr) {var janji = readjson.query (); var step = 0; scope.flag = false; janji.then (function (data) {console.log (data); scope.images = data;}); setInterval (function () {element.find ("li"). removeClass ("acitve"); langkah ++; langkah = langkah%5; element.find ("li"). eq (langkah) .addclass ("aktif");}, 1000)}}} Jika Anda ingin efek transisi, Anda dapat menambahkan animasi transisi CSS3 ke kelas acive .
Ini menggunakan $http dan $q untuk mengimplementasikan tarikan data asinkron yang tertunda. Dengan menggabungkan fungsi dengan cara ini, fungsi fungsi bisa lebih kuat dan lebih nyaman untuk memantau fungsi. Saya akan menghabiskan waktu menjelaskan isi AngularJS ' $q dan $Deferred . Faktanya, prinsip -prinsipnya serupa dan keduanya menerapkan operasi promise .
Kesulitan menerapkan JavaScript adalah bagaimana meningkatkan dan mengurangi elemen untuk memicu efek animasi AngularJS. Saya menulis satu kali ini, tetapi ada cacat kecil ketika saya mulai berjalan, yaitu, ukuran langkah tombol kecil harus ditambahkan ke 1 untuk disinkronkan dengan foto. Saya tidak tahu bagaimana itu disebabkan, jadi saya akan mengisi lubang di masa depan. Jika ada poin yang tidak pantas, silakan tunjukkan.
Ada cara lain untuk menulis, yang tidak banyak saya rekomendasikan. Meskipun mudah ditulis, saya akan menjelaskan secara singkat idenya, yaitu membuat array untuk menyimpan SRC dan informasi gambar lainnya. Setiap kali, ambil satu dari itu, ikat ke SRC IMG dalam dua arah. Sekarang baca IMG, dan ketika datang ke yang berikutnya, hapus SRC IMG dan tetapkan yang berikutnya. Dengan loop ini, meskipun korsel dapat dicapai, ini sangat meningkatkan jumlah permintaan HTTP. Dalam hal kecepatan jaringan yang rendah, pengalamannya sangat buruk, dan saya tidak merekomendasikannya.
Saya sangat merekomendasikan cara menulis ini. Meskipun saya sedikit bertele -tele, saya memiliki pengalaman yang baik.
<! Doctype html> <html lang = "en" ng-app = "lunbo"> <head> <meta charset = "utf-8"> <script src = "lib/angular.min.js" type = "text/javascript"> </script> <script srcrc = "lib/lib." <title> </iteme> <tyle> *{padding: 0px; margin: 0px; } div {position: relatif; } div ul {position: absolute; } div ul li {daftar-gaya-gaya: tidak ada; Posisi: Absolute; } div ul li a img {display: block; Lebar: 730px; Tinggi: 454px; } div ul.listContent {position: absolute; Kiri: 500px; Atas: 410px; Lebar: 200px; Tinggi: 25px; } div ul.listContent li.list {position: relatif; Tampilan: Blok; Lebar: 25px; Tinggi: 25px; float: kiri; margin: 0 5px; Perbatasan: 1px Solid Blue; Teks-Align: tengah; Line-Height: 25px; kursor: pointer; } .active {latar belakang: #161616; Warna: #FFFFFF; } </tyle> </head> <body ng-controller = "lunbocontroller"> <div lunbo> </div> <script type = "text/ng-template" id = "lunbo.html"> <div ng-mouseleave = "start ()"> <ul ng-switch = "pic"> <-wh-wh-wh-wh-whe "Li-" <) <ul ng-switch = "pic"> ibion = "start ()"> <ul ng-switch = "pic"> <po-wh-wh- "Li ng-whe ()" href = "{{img1.href}}"> <img src = "{{img1.src}}"/> </a> </li> <li ng-witch-when = "1"> <a href = "{{{img2.href}"> <a href = " src = "{{img2.src}}"/> </a> </li> <li ng-switch-when = "2"> <a href = "{{img3.href}}"> <mg src = "{{{img3.href}"/" href = "{{img4.href}}"> <img src = "{{img4.src}}"/> </a> </li> <li ng-switch-when = "4"> <a href = "{{{img5.href}"> <a href = "{{{{img5.href}"> <a href = " src = "{{img5.src}}"/> </a> </li> </ul> <ul> <li ng-click = "clickEvent (0)"> 1 </li> <li ng-click = "clickEvent (1)"> 2 </li> <li ng-klick = "clickevent (2)"> 2 </li> <li> <li ng-click = "clickevent (2)"> "> 2 </li> <li ng-ng-klick =" clickevent (2) ">"> 2 </li> <li ng-ng-click = "clickevent (2)"> "> 2 </li> <Li ng-click =" clickevent (2) ">"> "Li> <Li ng-ng-click =" Clickevent (2) "> > 4 </li> <li ng-click = "ClickEvent (4)"> 5 </li> </ul> </div> </script> </body> <script> var app = angular.module ('lungbo', ['nganimate']); app.controller ('lunbocontroller', ['$ scope', 'readjson', 'mouseEvent', function ($ scope, readjson, mouseEvent) {}]); app.factory ('readjson', ['$ http', '$ q', function ($ http, $ q) {return {query: function () {var ditangguhkan = $ q.defer (); $ http ({Method: 'get', url: 'img.json'}). Data ({Method: 'get', URL: 'IMG.JSON'}). }). ERROR (FUNGSI (DATA, STATUS, HEADER, CONFIG) {Deferred.Rect (data);}); /* Ada masalah dengan layanan ini dan perlu ditingkatkan. Saya belum memikirkan solusi*/ app.factory ('mouseEvent', function () {return {mouseEvent: function (eLe1, eLe2, event, done) {}}); app.directive ('lunbo', ['readjson', '$ timeout', 'mouseEvent', function (readjson, $ timeout, mouseEvent) {return {batasi: 'ea', TemplateUrl: 'lunbo.html', scope: {}, tautan: fungsi (scope, element, Atrence (Atre) {) {{{}, function (function, scope, element, {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{), function (function, function, function (function, { waktu = null; thenthen (function (data) {scope.img1 = data [0]; scope.img2 = data [1]; scope.img3 = data [2]; scope.img4 = data [3]; scope.img5 = data [4];}); Element.find (Li "). EQ (Langkah+1) .Artai (" Active "); Element.find (Li "). Removeclass (" Active "); }]); app.animation ('.. fade-in', function () {return {enter: function (elemen, selesai) {var step = 0; var time = null; // timer var animationfunc = function () {step+= 20; if (step> 100) {done (); clearInterVal (time);} lain {element.csss ("step (" step ("); element.css (opacity ", 0); element.css ("opacity", 1);Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap ini akan membantu untuk belajar dan bekerja semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi.