Bagaimana untuk melaksanakan kotak carian dalam vuejs
Cara melaksanakan kotak carian dalam vuejs: 1. Buat komponen logo dan bahagian kotak carian 2. Buat objek Vue kosong yang baharu 3. Gunakan "bus.$emit("change",index );" Hanya cetuskan peristiwa dan lulus parameter.
Persekitaran pengendalian artikel ini: sistem Windows 7, vue versi 2.9.6, komputer DELL G3.
Bagaimana untuk melaksanakan kotak carian dalam vuejs?
Melaksanakan kotak carian ringkas berdasarkan Vue.js
Saya melihat latihan itu pada github, latih semula sendiri alamat asal dahulu : https://github.com/lavyun/vue-demo-search
Pengetahuan utama yang digunakan adalah sangat mudah, pengetahuan mudah tentang vuejs2.0 sudah memadai. Kod sumber menggunakan .vue untuk membina dan ES6, pembungkusan webpack dan sebagainya. Saya masih kurang berpengalaman, jadi saya akan menggunakan .js yang mudah untuk menulis dahulu.
Lihat kesannya dahulu
Ada dua komponen di sini, satu bahagian logo dan satu lagi bahagian kotak carian.
html
html sangat mudah, ia hanya merujuk kepada dua komponen.
<p id="app"> <logo-picture></logo-picture> <search-panel></search-panel> </p> //js还要实例#app var app = new Vue({ el: "#app" })
logo
Mari kita menganalisisnya dahulu, Ia perlu responsif di sini Ya, jika anda memilih ikon enjin carian yang berbeza di bawah, anda perlu menukarnya dengan sewajarnya. Jadi
. Apabila diklik pada segi tiga terbalik belakang, senarai juntai bawah
Kemudian terdapat kotak drop-down. Jika anda ingin mempunyai kesan peralihan, anda perlu membungkusnya dalam
Vue.component('logo-picture',{ template :' \ <p class="main-logo">\ <img :src="items[now].src" @click="toggleFlag"/>\ <span @click="toggleFlag" class="logoList-arrow"> </span>\ <transition-group tag="ul" v-show="flagShow" class="logoList">\ <li v-for="(item,index) in items" :key="index" @click="changeFlag(index)" @mouseover="flagHover(index)" :class="{selectback: index == hoverindex}">\ <img :src="item.src" />\ </li>\ </transition>\ </p>', data: function() { return { items: [{src:'../src/assets/360_logo.png'},{src:'../src/assets/baidu_logo.png'},{src:'../src/assets/sougou_logo.png'}], now: 0, flagShow: false, hoverindex: -1 } }, methods: { //显示隐藏图片列表 toggleFlag: function() { this.flagShow = !this.flagShow; }, //改变搜索引擎 changeFlag: function(index) { this.now = index; this.flagShow = false; bus.$emit("change",index); }, //li hover flagHover: function(index) { this.hoverindex = index; } } });
Kotak lungsur
Input perlu diikat dalam dua arah, jadi v-model="kata kunci" mesti juga terikat. Acara papan kekunci @keyup, jika anda menekan enter, carian akan dilakukan dan senarai maklumat pemulangan yang diberikan akan dipilih apabila turun atau naik.
Kotak butiran di bawah adalah serupa dengan senarai lungsur turun
Vue.component('search-panel',{ template:'\ <p class="search-input">\ <input v-model="search" @keyup="get($event)" @keydown.enter="searchInput()" @keydown.down="selectDown()" @keydown.up.prevent="selectUp()"/>\ <span @click="clearInput()" class="search-reset">×</span>\ <button @click="searchInput()" class="search-btn">搜一下</button>\ <p class="search-select">\ <transition-group tag="ul" mode="out-in">\ <li v-for="(value,index) in myData" :class="{selectback:index==now}" :key="index" @click="searchThis" @mouseover="selectHover(index)" class="search-select-option search-select-list">\ {{value}}\ </li>\ </transition-group>\ </p>\ </p>', data: function() { return { search: '', myData: [], flag: 0, now: -1, logoData: [ { 'name': "360搜索", searchSrc: "https://www.so.com/s?ie=utf-8&shb=1&src=360sou_newhome&q=" }, { 'name': "百度搜索", searchSrc: "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=" }, { 'name': "搜狗搜索", searchSrc: "https://www.sogou.com/web?query=" } ] } }, methods: { get: function(event) { if(event.keyCode == 38 || event.keyCode == 40){ //向上向下 return ; } this.$http.jsonp('https://sug.so.360.cn/suggest?word=' + this.search + '&encodein=utf-8&encodeout=utf-8').then(function(res) { this.myData = res.data.s; }, function() { }); }, //清除内容 clearInput: function() { this.search = ''; this.get(); }, //搜索 searchInput: function() { alert(this.flag) window.open(this.logoData[this.flag].searchSrc+this.search); }, //搜索的内容 searchThis: function(index) { this.search = this.myData[index]; this.searchInput(); }, //li hover selectHover: function(index) { this.search = this.myData[index]; this.now = index; }, //向下 selectDown: function() { this.now++; if(this.now == this.myData.length) { this.now = 0; } this.search = this.myData[this.now]; }, //向上 selectUp: function() { this.now--; if(this.now == -1) { this.now = this.myData.length - 1; } this.search = this.myData[this.now]; } }, created: function() { //通信 var self = this; bus.$on('change',function(index) { self.flag = index; }) } })
Masalah komunikasi antara dua komponen bersaudara
var bus = new Vue(); //logo-picture里触发事件,并传递参数 bus.$emit("change",index); //search-panel里监听事件是否发生 var self = this; bus.$on('change',function(index) { self.flag = index; })
Beri perhatian kepada masalah ini di sini di $on titik ke bas, jadi anda perlu menyimpannya ke panel carian rujukan.
Pembelajaran yang disyorkan: "vue. tutorial 》
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kotak carian dalam vuejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Apabila menggunakan rangka kerja Vue untuk membangunkan projek bahagian hadapan, kami akan menggunakan berbilang persekitaran apabila digunakan Selalunya nama domain antara muka yang dipanggil oleh pembangunan, ujian dan persekitaran dalam talian adalah berbeza. Bagaimanakah kita boleh membuat perbezaan? Iaitu menggunakan pembolehubah dan corak persekitaran.

Ace ialah editor kod boleh terbenam yang ditulis dalam JavaScript. Ia sepadan dengan fungsi dan prestasi penyunting asli seperti Sublime, Vim dan TextMate. Ia boleh dibenamkan dengan mudah ke dalam mana-mana halaman web dan aplikasi JavaScript. Ace dikekalkan sebagai editor utama untuk Cloud9 IDE dan merupakan pengganti kepada projek Mozilla Skywriter (Bespin).

Kata Pengantar: Dalam pembangunan vue3, reaktif menyediakan kaedah untuk melaksanakan data responsif. Ini adalah API yang kerap digunakan dalam pembangunan harian. Dalam artikel ini, penulis akan meneroka mekanisme operasi dalamannya.

Vue.js telah menjadi rangka kerja yang sangat popular dalam pembangunan bahagian hadapan hari ini. Memandangkan Vue.js terus berkembang, ujian unit menjadi semakin penting. Hari ini kita akan meneroka cara menulis ujian unit dalam Vue.js 3 dan menyediakan beberapa amalan terbaik serta masalah dan penyelesaian biasa.

Dalam Vue.js, pembangun boleh menggunakan dua sintaks berbeza untuk mencipta antara muka pengguna: sintaks JSX dan sintaks templat. Kedua-dua sintaks mempunyai kelebihan dan kekurangannya sendiri Mari kita bincangkan perbezaan, kelebihan dan kekurangannya.

Dalam proses projek pembangunan sebenar, kadangkala perlu memuat naik fail yang agak besar, dan kemudian muat naik akan menjadi agak perlahan, jadi latar belakang mungkin memerlukan bahagian hadapan untuk memuat naik hirisan fail Sebagai contoh, 1 A aliran fail gigabait dipotong kepada beberapa aliran fail kecil, dan kemudian antara muka diminta untuk menghantar aliran fail kecil masing-masing.

Sejak keluaran Vue3, perkataan komposisi API telah memasuki bidang penglihatan pelajar yang menulis Vue. vue/composition-api plug-in, Pelajar Vue2 juga boleh menaiki bas Seterusnya, kami akan menggunakan ref responsif dan reaktif untuk menjalankan analisis mendalam tentang cara pemalam ini mencapai perkara ini.

Apabila kami menggunakan Amap, pegawai mengesyorkan banyak kes dan tunjuk cara kepada kami, tetapi kes ini semua menggunakan kaedah asli untuk mengakses dan tidak memberikan tunjuk cara vue atau bertindak balas Ramai orang telah menulis tentang akses vue2 di Internet , kita akan melihat bagaimana vue3 menggunakan API Amap yang biasa digunakan saya harap ia akan membantu semua orang.
