Apa yang disarankan oleh artikel ini ialah menggunakan angularjs untuk melaksanakan keseluruhan proses penyepaduan UI (weui) yang baru dilancarkan oleh WeChat yang mempunyai keperluan yang sama boleh merujuk kepada perkara berikut
Pengenalan.
Tidak lama dahulu, WeChat melancarkan set UInya sendiri, saya nampak ramai pembangun telah menggunakannya pada beberapa rangka kerja bahagian hadapan, seperti bertindak balas dan vue . Baru-baru ini saya sedang belajar Angularjs, jadi saya juga ingin menyepadukan UI ini ke dalam rangka kerja ini. Saya telah mencubanya dalam beberapa hari yang lalu dan hanya menggunakan fungsi Sekarang saya ingin berkongsi dengan anda , sila beri sedikit nasihat daripada pakar.
Sesuai untuk pembaca
yang mempunyai asas tertentu Angularjs dan memahami ngRoute dan ngAnimate.
Termasuk fail
Apabila menyepadukan, rujuk halaman demo rasmi dan buat sendiri halaman demo, sepenuhnya menggunakan Angularjs Made tanpa merujuk rangka kerja lain. Mari kita jelaskan dahulu fail yang diimport.
Gunakan angular.min.js 1.4.9
Guna angular-route.min.js 1.4.9
Gunakan angular-animate.min.js 1.4.9
Gunakan weui.min.css 0.4.0
Pada mulanya, saya ingin membuat satu halaman seperti halaman demo rasmi Selepas pembangunan, saya mendapati bahawa meletakkan semua kandungan ke dalam satu fail adalah terlalu kemas, saya menggunakan fungsi penghalaan Angularjs untuk memisahkan setiap fungsi kecil ke dalam halaman berasingan Muatkan apabila diperlukan. Ini dicapai menggunakan fungsi memuatkan templat. Oleh itu, kod halaman navigasi dipaparkan dengan sangat bersih Jika anda ingin menggunakan bahagian mana kod fungsi, anda boleh terus menggunakan halaman html dan fail skrip js yang sepadan, yang mudah dan pantas.
Berikut ialah kod untuk halaman navigasi:
<!DOCTYPE html> <html lang="en" ng-app="weuiapp"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0"> <title>WeUI</title> <link rel="stylesheet" href="./css/weui.css" /> </head> <style type="text/css"> .home, .view { position: absolute; width: 100%; left: 0; top: 0; } </style> <body ng-controller="home"> <p class="home" ng-if="homeShow"> <p class="weui_grids"> <a href="#/button" class="weui_grid js_grid" data-id="button" ng-click="showBlock('button')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_button.png" alt=""> </p> <p class="weui_grid_label"> Button </p> </a> <a href="#/cell" class="weui_grid js_grid" data-id="cell" ng-click="showBlock('cell')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_cell.png" alt=""> </p> <p class="weui_grid_label"> Cell </p> </a> <a href="#/toast" class="weui_grid js_grid" data-id="toast" ng-click="showBlock('toast')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_toast.png" alt=""> </p> <p class="weui_grid_label"> Toast </p> </a> <a href="javascript:;" class="weui_grid js_grid" data-id="dialog" ng-click="showBlock('dialog')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_dialog.png" alt=""> </p> <p class="weui_grid_label"> Dialog </p> </a> <a href="javascript:;" class="weui_grid js_grid" data-id="progress" ng-click="showBlock('progress')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_progress.png" alt=""> </p> <p class="weui_grid_label"> Progress </p> </a> <a href="#/msg" class="weui_grid js_grid" data-id="msg" ng-click="showBlock('msg')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_msg.png" alt=""> </p> <p class="weui_grid_label"> Msg </p> </a> <a href="#/article" class="weui_grid js_grid" data-id="article" ng-click="showBlock('article')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_article.png" alt=""> </p> <p class="weui_grid_label"> Article </p> </a> <a href="javascript:;" class="weui_grid js_grid" data-id="actionsheet" ng-click="showBlock('actionsheet')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_actionSheet.png" alt=""> </p> <p class="weui_grid_label"> ActionSheet </p> </a> <a href="#/icons" class="weui_grid js_grid" data-id="icons" ng-click="showBlock('icons')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_icons.png" alt=""> </p> <p class="weui_grid_label"> Icons </p> </a> <a href="#/panel" class="weui_grid js_grid" data-id="panel" ng-click="showBlock('panel')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_panel.png" alt=""> </p> <p class="weui_grid_label"> Panel </p> </a> <a href="javascript:;" class="weui_grid js_grid" data-id="tab" ng-click="showBlock('tab')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_tab.png" alt=""> </p> <p class="weui_grid_label"> Tab </p> </a> <a href="#/searchbar" class="weui_grid js_grid" data-id="searchbar" ng-click="showBlock('searchbar')"> <p class="weui_grid_icon"> <img src="./images/icon_nav_search_bar.png" alt=""> </p> <p class="weui_grid_label"> SearchBar </p> </a> </p> </p> <p class="view" ng-view ng-if="viewShow"></p> <script type="text/javascript" src="./js/angular.min.js"></script> <script type="text/javascript" src="./js/angular-animate.min.js"></script> <script type="text/javascript" src="./js/angular-route.min.js"></script> <script type="text/javascript" src="./js/toast.js"></script> <script type="text/javascript" src="./js/example.js"></script> </body> </html>
Kebanyakan kod di atas berasal daripada kod halaman utama rasmi Memandangkan Angularjs digunakan, atribut yang sepadan ditambah, termasuk ngApp, ngController, ngClick, ngIf dan ngView yang memaparkan halaman demonstrasi fungsi.
Dalam kod, fungsi showBlock digunakan dalam ngClick Parameter ialah rentetan fungsi klik semasa Parameter fungsi ini tidak digunakan selepas menggunakan fungsi penghalaan sahaja ditambahkan pada fungsi ini dan bahagian demonstrasi fungsi kod, sila lihat kod skrip di bawah untuk butiran.
angular.module('weuiapp', ['ngAnimate', 'ngRoute']) .config(function($routeProvider) { $routeProvider .when('/', { controller: 'home', templateUrl: '' }) .when('/button',{ controller: 'button', templateUrl: 'button.html' }) .when('/cell', { controller: 'cell', templateUrl: 'cell.html' }) .when('/toast', { controller: 'toast', templateUrl: 'toast.html' }) .when('/msg', { controller: 'msg', templateUrl: 'msg.html' }) .when('/article', { controller: 'article', templateUrl: 'article.html' }) .when('/icons', { controller: 'icons', templateUrl: 'icons.html' }) .when('/panel', { controller: 'panel', templateUrl: 'panel.html' }) .otherwise({ redirectTo: '/' }) }) .controller('home', function($scope) { $scope.homeShow = true; $scope.viewShow = false; $scope.showBlock = function() { $scope.homeShow = false; $scope.viewShow = true; } }) .controller('toast', ['$scope', '$interval', toast]) .animation('.aweui-show', ['$animateCss', toastAnimate]) .animation('.home', ['$animateCss', function($animateCss) { return { enter: function(element, doneFn) { return $animateCss(element, { from: { left: '100%', top: 0, opacity: 0 }, to: { left: 0, top: 0, opacity: 1 }, duration: .3 }); }, leave: function(element, doneFn) { return $animateCss(element, { from: { left: 0, top: 0, opacity: 1 }, to: { left: '-100%', top: 0, opacity: 0 }, duration: .3 }); } } }]) .animation('.view', ['$animateCss', function($animateCss) { return { enter: function(element, doneFn) { return $animateCss(element, { from: { left: '100%', top: 0, opacity: 0 }, to: { left: 0, top: 0, opacity: 1 }, duration: .3 }); }, leave: function(element, doneFn) { return $animateCss(element, { from: { left: 0, top: 0, opacity: 1 }, to: { left: '-100%', top: 0, opacity: 0 }, duration: .3 }); } } }]) $scope.showBlock = function() { $scope.homeShow = false; $scope.viewShow = true; }
Bahagian ini ialah kod fungsian yang akan dilaksanakan oleh fungsi ini mengawal pembolehubah homeShow dan viewShow masing-masing untuk dilaksanakan navigasi dan demonstrasi fungsi. Menunjukkan dan menyembunyikan dua bahagian.
.animation('.home', ['$animateCss', function($animateCss) { return { enter: function(element, doneFn) { return $animateCss(element, { from: { left: '100%', top: 0, opacity: 0 }, to: { left: 0, top: 0, opacity: 1 }, duration: .3 }); }, leave: function(element, doneFn) { return $animateCss(element, { from: { left: 0, top: 0, opacity: 1 }, to: { left: '-100%', top: 0, opacity: 0 }, duration: .3 }); } } }])
Di atas ialah kod kesan animasi apabila bahagian navigasi dipaparkan. Bahagian navigasi dimulakan kepada kedudukan mutlak, supaya ia bergerak ke kiri keluar dari kawasan paparan dan pudar sebelum hilang. Selepas melihat demonstrasi fungsi dan kembali ke navigasi, animasi diterbalikkan. Perkhidmatan $animateCss ngAnimate digunakan di sini, dan acara masuk masuk dan cuti acara keluar yang disediakan oleh perkhidmatan ini digunakan. Fungsi animasi lain adalah sama.
$routeProvider .when('/', { controller: 'home', templateUrl: '' }) .when('/button',{ controller: 'button', templateUrl: 'button.html' }) .when('/cell', { controller: 'cell', templateUrl: 'cell.html' }) .when('/toast', { controller: 'toast', templateUrl: 'toast.html' }) .when('/msg', { controller: 'msg', templateUrl: 'msg.html' }) .when('/article', { controller: 'article', templateUrl: 'article.html' }) .when('/icons', { controller: 'icons', templateUrl: 'icons.html' }) .when('/panel', { controller: 'panel', templateUrl: 'panel.html' }) .otherwise({ redirectTo: '/' })
Ini ialah perkhidmatan penghalaan, sepadan dengan atribut href bagi teg a dalam html, jadi fungsi showBlock ialah tidak digunakan dalam program ini Parameter tidak lagi berguna Fungsi ini hanya dicipta untuk menambah kesan dinamik.
Seterusnya, mari kita lihat kod halaman bahagian demonstrasi fungsi.
<p class="page"> <p class="hd"> <h1 class="page_title">Toast</h1> </p> <p class="bd spacing"> <a href="javascript:;" class="weui_btn weui_btn_primary" ng-click="showToast()">点击弹出Toast</a> <a href="javascript:;" class="weui_btn weui_btn_primary" ng-click="showLoadingToast()">点击弹出Loading Toast</a> </p> <!--BEGIN toast--> <p id="toast" ng-if="toastHide" class="aweui-show"> <p class="weui_mask_transparent"></p> <p class="weui_toast"> <i class="weui_icon_toast"></i> <p class="weui_toast_content">已完成</p> </p> </p> <!--end toast--> <!-- loading toast --> <p id="loadingToast" ng-if="loadingToastHide" class="weui_loading_toast aweui-show"> <p class="weui_mask_transparent"></p> <p class="weui_toast"> <p class="weui_loading"> <p class="weui_loading_leaf weui_loading_leaf_0"></p> <p class="weui_loading_leaf weui_loading_leaf_1"></p> <p class="weui_loading_leaf weui_loading_leaf_2"></p> <p class="weui_loading_leaf weui_loading_leaf_3"></p> <p class="weui_loading_leaf weui_loading_leaf_4"></p> <p class="weui_loading_leaf weui_loading_leaf_5"></p> <p class="weui_loading_leaf weui_loading_leaf_6"></p> <p class="weui_loading_leaf weui_loading_leaf_7"></p> <p class="weui_loading_leaf weui_loading_leaf_8"></p> <p class="weui_loading_leaf weui_loading_leaf_9"></p> <p class="weui_loading_leaf weui_loading_leaf_10"></p> <p class="weui_loading_leaf weui_loading_leaf_11"></p> </p> <p class="weui_toast_content">数据加载中</p> </p> </p> </p>
Ini ialah kod halaman tunjuk cara untuk memuatkan fungsi gesaan menunggu secara keseluruhannya teks paparan; Kedua, terdapat animasi menunggu pemuatan dan teks segera dipaparkan.
Terdapat dua butang pada halaman tersebut Fungsinya masing-masing untuk menghembuskan kedua-dua gaya ini Selepas setiap gaya dihembus, ia akan hilang secara automatik selepas 3 saat.
Dalam js halaman navigasi, terdapat pengawal dan fungsi animasi yang memanggil fungsi dalam kod skrip halaman fungsi ini, iaitu fungsi pengawal toast() dan fungsi animasi toastAnimate(). Kod fail skrip adalah seperti berikut.
//toast控制器 function toast($scope, $interval) { $scope.toastHide = 0; $scope.loadingToastHide = 0; $scope.showToast = function() { $scope.toastHide = 1; $interval(function() { $scope.toastHide = 0; }, 3000, 1); } $scope.showLoadingToast = function() { $scope.loadingToastHide = 1; $interval(function() { $scope.loadingToastHide = 0; }, 3000, 1); } } //显示与隐藏时的动画,使用ngAnimate中的$animateCss服务 function toastAnimate($animateCss) { return { enter: function(element, doneFn) { return $animateCss(element, { from: { opacity: 0 }, to: { opacity: 1 }, duration: .3 }); }, leave: function(element, doneFn) { return $animateCss(element, { from: { opacity: 1 }, to: { opacity: 0 }, duration: .3 }); } } }
Pada ketika ini, navigasi dan halaman demonstrasi fungsi telah dilaksanakan. Memandangkan kebanyakan UI adalah statik dan tidak dinamik, anda hanya perlu menyalin demo rasmi. Jika perlu menambah kod dinamik, kami hanya melakukan yang ini sekarang dan akan terus menambahkannya sehingga siap pada masa hadapan.
Artikel berkaitan:
Pengenkapsulan lapisan pop timbul JS untuk gesaan maklumat yang biasa digunakan dalam aplikasi WEUI
Apakah pengetahuan yang boleh dipelajari melalui WeUI pada WeChat?