cari
Rumahhujung hadapan webtutorial jsMembuat widget Typeahead dengan Angularjs - SitePoint

3Jika anda memulakan projek AngularJS, anda mungkin mahu mempunyai semua komponen yang ditulis dalam sudut. Walaupun sudah tentu mungkin untuk menggunakan semula plugin jQuery yang sedia ada, membuang sekumpulan jQuery di dalam arahan tidak selalu cara yang betul untuk melakukan sesuatu. Nasihat saya adalah untuk memeriksa terlebih dahulu jika perkara yang sama boleh dilaksanakan dengan sudut tulen dengan cara yang lebih mudah/lebih baik. Ini menjadikan kod aplikasi anda bersih dan boleh dipelihara. Tutorial ini, yang disasarkan kepada pemula, berjalan pembaca melalui penciptaan widget Typeahead yang mudah dengan AngularJs.

Takeaways Key

  • Pembaca panduan tutorial melalui membuat widget Typeahead dengan AngularJS, yang memberikan cadangan sebagai jenis pengguna ke dalam kotak teks. Widget ini direka untuk menjadi sangat dikonfigurasikan dan mudah diintegrasikan ke dalam sistem yang sedia ada.
  • Proses ini melibatkan membina sebuah kilang yang berinteraksi dengan API yang tenang dan mengembalikan data JSON untuk cadangan auto-lengkap, mewujudkan arahan untuk merangkum medan input Typeahead, dan membuat templat untuk arahan. Arahan ini disimpan dikonfigurasikan untuk pengguna akhir untuk menyesuaikan pilihan seperti sifat objek JSON untuk ditunjukkan sebagai sebahagian daripada cadangan dan model dalam skop pengawal yang akan memegang item yang dipilih.
  • Tutorial juga menerangkan cara mengemas kini fungsi pautan arahan dan mengkonfigurasi Arahan untuk digunakan. Produk akhir adalah widget Typeahead AngularJS dengan pilihan konfigurasi, yang boleh disesuaikan dengan lebih lanjut menggunakan CSS. Kod sumber lengkap tersedia untuk dimuat turun di GitHub.
Gambaran Keseluruhan

Dalam tutorial ini kita akan membina widget Typeahead yang mudah yang mencipta cadangan sebaik sahaja seseorang mula menaip ke dalam kotak teks. Kami akan arkitek aplikasinya sedemikian rupa sehingga produk akhir akan sangat dikonfigurasikan dan boleh dipasang ke dalam sistem yang sedia ada dengan mudah. Langkah -langkah asas yang terlibat dalam proses penciptaan adalah:

    Buat kilang yang berinteraksi dengan API yang tenang, dan mengembalikan JSON yang akan digunakan untuk cadangan lengkap auto.
  • Buat arahan yang akan menggunakan data JSON dan merangkum medan input Typeahead.
  • Pastikan arahan dikonfigurasi supaya pengguna akhir dapat mengkonfigurasi pilihan berikut.
Pilihan Konfigurasi

    sifat objek JSON yang tepat untuk dipaparkan sebagai sebahagian daripada cadangan.
  1. Model dalam skop pengawal yang akan memegang item yang dipilih.
  2. Fungsi dalam skop pengawal yang dilaksanakan apabila item dipilih.
  3. teks pemegang tempat (prompt) untuk medan input Typeahead.

Langkah 1: Membina kilang untuk mendapatkan data

Sebagai langkah pertama, mari kita buat kilang yang menggunakan perkhidmatan HTTP Angular untuk berinteraksi dengan API yang tenang. Lihat coretan berikut:
<span>var typeAhead = angular.module('app', []);
</span>
typeAhead<span>.factory('dataFactory', function($http) {
</span>  <span>return {
</span>    <span>get: function(url) {
</span>      <span>return $http.get(url).then(function(resp) {
</span>        <span>return resp.data; // success callback returns this
</span>      <span>});
</span>    <span>}
</span>  <span>};
</span><span>});</span>
Kod sebelumnya mewujudkan kilang yang dipanggil DataFactory yang mengambil data JSON dari API. Kami tidak akan masuk ke butiran kilang, tetapi kami perlu memahami secara ringkas bagaimana perkhidmatan $ HTTP berfungsi. Anda lulus URL ke fungsi get (), yang mengembalikan janji. Satu lagi panggilan untuk kemudian () pada janji ini juga mengembalikan janji lain (kami mengembalikan janji ini dari fungsi kilang () kilang). Janji ini diselesaikan dengan nilai pulangan dari panggilan balik kejayaan yang diluluskan pada masa itu (). Jadi, di dalam pengawal kami, kami tidak secara langsung berinteraksi dengan $ HTTP. Sebaliknya, kami meminta contoh kilang di pengawal dan memanggil fungsi GET () dengan URL. Oleh itu, kod pengawal kami yang berinteraksi dengan kilang kelihatan seperti ini:
typeAhead<span>.controller('TypeAheadController', function($scope<span>, dataFactory</span>) { // DI in action
</span>  dataFactory<span>.get('states.json').then(function(data) {
</span>    $scope<span>.items = data;
</span>  <span>});
</span>  $scope<span>.name = ''; // This will hold the selected item
</span>  $scope<span>.onItemSelected = function() { // this gets executed when an item is selected
</span>    <span>console.log('selected=' + $scope.name);
</span>  <span>};
</span><span>});</span>
Kod sebelumnya menggunakan titik akhir API yang dipanggil States.json yang mengembalikan senarai JSON dari Amerika Syarikat. Apabila data tersedia, kami menyimpan senarai dalam item model skop. Kami juga menggunakan nama model untuk memegang item yang dipilih. Akhirnya, fungsi onItemSelected () akan dilaksanakan apabila pengguna memilih keadaan tertentu.

Langkah 2: Mewujudkan Arahan

Mari kita mulakan dengan Arahan Typeahead, ditunjukkan di bawah.
typeAhead<span>.directive('typeahead', function($timeout) {
</span>  <span>return {
</span>    <span>restrict: 'AEC',
</span>    <span>scope: {
</span>      <span>items: '=',
</span>      <span>prompt: '@',
</span>      <span>title: '@',
</span>      <span>subtitle: '@',
</span>      <span>model: '=',
</span>      <span>onSelect: '&'
</span>    <span>},
</span>    <span>link: function(scope<span>, elem, attrs</span>) {
</span>    <span>},
</span>    <span>templateUrl: 'templates/templateurl.html'
</span>  <span>};
</span><span>});</span>
Dalam Arahan kita mencipta skop terpencil yang mentakrifkan beberapa sifat:
  • item: Digunakan untuk lulus senarai JSON ke skop terpencil.
  • prompt: Satu cara mengikat untuk lulus teks pemegang tempat untuk medan input Typeahead.
  • Tajuk dan sari kata: Setiap entri medan Lengkap Auto mempunyai tajuk dan sarikata. Kebanyakan widget Typeahead berfungsi dengan cara ini. Mereka biasanya (jika tidak selalu) mempunyai dua bidang untuk setiap entri dalam cadangan drop down. Sekiranya objek JSON mempunyai sifat tambahan, ini bertindak sebagai cara meluluskan dua sifat yang akan dipaparkan dalam setiap cadangan dalam lungsur turun. Dalam kes kami, tajuk sepadan dengan nama Negeri, manakala Subtitle mewakili singkatannya.
  • Model: Dua cara mengikat untuk menyimpan pilihan.
  • onSelect: kaedah mengikat, digunakan untuk melaksanakan fungsi dalam skop pengawal sebaik sahaja pemilihan berakhir.
Nota: Contoh respons JSON ditunjukkan di bawah:
<span>var typeAhead = angular.module('app', []);
</span>
typeAhead<span>.factory('dataFactory', function($http) {
</span>  <span>return {
</span>    <span>get: function(url) {
</span>      <span>return $http.get(url).then(function(resp) {
</span>        <span>return resp.data; // success callback returns this
</span>      <span>});
</span>    <span>}
</span>  <span>};
</span><span>});</span>

Langkah 3: Buat templat

Sekarang, mari buat templat yang akan digunakan oleh Arahan.
typeAhead<span>.controller('TypeAheadController', function($scope<span>, dataFactory</span>) { // DI in action
</span>  dataFactory<span>.get('states.json').then(function(data) {
</span>    $scope<span>.items = data;
</span>  <span>});
</span>  $scope<span>.name = ''; // This will hold the selected item
</span>  $scope<span>.onItemSelected = function() { // this gets executed when an item is selected
</span>    <span>console.log('selected=' + $scope.name);
</span>  <span>};
</span><span>});</span>
Pertama, kami membuat medan teks input di mana pengguna akan menaip. Prompt harta skop ditugaskan ke atribut placeholder. Seterusnya, kami gelung melalui senarai negeri dan memaparkan nama dan sifat singkatan. Nama -nama harta ini dikonfigurasikan melalui tajuk dan sifat skop subtitle. Arahan NG-MouseEnter dan NG-Class digunakan untuk menyerlahkan entri apabila pengguna berayun dengan tetikus. Seterusnya, kami menggunakan penapis: model, yang menapis senarai oleh teks yang dimasukkan ke dalam medan input. Akhirnya, kami menggunakan arahan NG-Hide untuk menyembunyikan senarai apabila sama ada medan teks input kosong atau pengguna telah memilih item. Harta yang dipilih ditetapkan untuk benar di dalam fungsi Handleselection (), dan ditetapkan kepada False False (untuk menunjukkan senarai cadangan) apabila seseorang mula menaip ke medan input.

Langkah 4: Kemas kini fungsi pautan

Seterusnya, mari kita mengemas kini fungsi pautan arahan kami seperti yang ditunjukkan di bawah.
typeAhead<span>.directive('typeahead', function($timeout) {
</span>  <span>return {
</span>    <span>restrict: 'AEC',
</span>    <span>scope: {
</span>      <span>items: '=',
</span>      <span>prompt: '@',
</span>      <span>title: '@',
</span>      <span>subtitle: '@',
</span>      <span>model: '=',
</span>      <span>onSelect: '&'
</span>    <span>},
</span>    <span>link: function(scope<span>, elem, attrs</span>) {
</span>    <span>},
</span>    <span>templateUrl: 'templates/templateurl.html'
</span>  <span>};
</span><span>});</span>
Fungsi HandlesElection () mengemas kini harta skop, model, dengan nama negeri yang dipilih. Kemudian, kami menetapkan semula sifat semasa dan terpilih. Seterusnya, kami memanggil fungsi OnSelect (). Kelewatan ditambah kerana skop tugasan.Model = SelectedItem tidak mengemas kini harta skop pengawal terikat dengan segera. Adalah wajar untuk melaksanakan fungsi panggil balik skop pengawal selepas model telah dikemas kini dengan item yang dipilih. Itulah sebabnya kami telah menggunakan perkhidmatan $ tamat $. Selain itu, fungsi -fungsi iscurrent () dan setCurrent () digunakan bersama dalam templat untuk menyerlahkan entri dalam cadangan lengkap auto. CSS berikut juga digunakan untuk menyelesaikan proses sorotan.
<span>{
</span>  <span>"name": "Alabama",
</span>  <span>"abbreviation": "AL"
</span><span>}</span>

Langkah 5: Konfigurasikan dan gunakan Arahan

Akhirnya, mari kita memohon arahan dalam HTML, seperti yang ditunjukkan di bawah.
<span><span><span><input> type<span>="text"</span> ng-model<span>="model"</span> placeholder<span>="{{prompt}}"</span> ng-keydown<span>="selected=false"</span> /></span>
</span><span><span><span><br>/></span>
</span>
<span><span><span><div> class<span>="items"</span> ng-hide<span>="!model.length || selected"</span>>
  <span><span><span><div> class<span>="item"</span> ng-repeat<span>="item in items | filter:model  track by $index"</span> ng-click<span>="handleSelection(item[title])"</span> <span>style<span>="<span>cursor:pointer</span>"</span></span> ng-class<span>="{active:isCurrent($index)}"</span> ng-mouseenter<span>="setCurrent($index)"</span>>
    <span><span><span><p> class<span>="title"</span>></p></span>{{item[title]}}<span><span></span>></span>
</span>    <span><span><span><p> class<span>="subtitle"</span>></p></span>{{item[subtitle]}}<span><span></span>></span>
</span>  <span><span><span></span></span></span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span></span></span></span>

Kesimpulan

Tutorial ini telah menunjukkan kepada anda bagaimana untuk membuat widget Typeahead AngularJS dengan pilihan konfigurasi. Kod sumber lengkap tersedia untuk dimuat turun di GitHub. Jangan ragu untuk memberi komen jika ada sesuatu yang tidak jelas atau anda ingin memperbaiki apa -apa. Juga, jangan lupa untuk menyemak demo langsung.

soalan yang sering ditanya mengenai membuat widget typeahead dengan angularjs

Bagaimana saya boleh menyesuaikan penampilan dropdown typeahead?

Menyesuaikan penampilan dropdown typeahead dapat dicapai dengan menggunakan CSS. Anda boleh menargetkan menu dropdown dengan menggunakan kelas .dropdown-menu. Sebagai contoh, jika anda ingin menukar warna latar belakang dan warna fon, anda boleh menggunakan kod CSS berikut:
. 343A40; }
ingat untuk memasukkan CSS ini dalam fail CSS utama anda atau dalam tag dalam fail HTML anda.

Bagaimanakah saya dapat mengehadkan bilangan cadangan dalam dropdown typeahead? Atribut ini menentukan bilangan minimum aksara yang mesti dimasukkan sebelum Typeahead mula menendang. Sebagai contoh, jika anda ingin mula menunjukkan cadangan selepas pengguna menaip 3 aksara, anda boleh menggunakan kod berikut:


Bagaimana saya boleh menggunakan fungsi pemilihan objek dengan Typeahead?

Dengan Typeahead, anda boleh menggunakan atribut Typeahead-on-Select. Atribut ini membolehkan anda menentukan fungsi yang dipanggil apabila perlawanan dipilih. Fungsi ini akan diluluskan item yang dipilih. Contohnya:

Dalam pengawal anda, anda boleh menentukan fungsi onSelect seperti ini :
$ scope.onselect = function (item, model, label) { // Lakukan sesuatu dengan item yang dipilih
}; Bolehkah saya menggunakan Typeahead dengan Bootstrap dalam AngularJS? Modul ini menyediakan satu set arahan AngularJS berdasarkan markup dan CSS Bootstrap. Arahan Typeahead boleh digunakan seperti berikut:

Dalam contoh ini, menyatakan Array of States, $ ViewValue adalah nilai yang dimasukkan oleh pengguna, dan Limitto: 8 mengehadkan bilangan cadangan kepada 8.

Bagaimana saya boleh menggunakan Typeahead dengan data jauh dalam Angularjs?

Untuk menggunakan Typeahead dengan data jauh di AngularJS, anda boleh menggunakan perkhidmatan HTTP $ untuk mengambil data dari pelayan jauh. Atribut Typeahead boleh digunakan untuk mengikat medan input ke data yang diambil. Contohnya:

$ scope.getStates = function (val) { return $ http.get ('/api/states', { params: { name: val

}
}). Kemudian (fungsi (response) {
response response.data.map (fungsi (item) {
kembali item.name;

}); Dalam contoh ini, GetStates adalah fungsi yang mengambil negara dari pelayan jauh berdasarkan nilai yang dimasukkan oleh Pengguna.

Atas ialah kandungan terperinci Membuat widget Typeahead dengan Angularjs - SitePoint. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Ganti aksara rentetan dalam javascriptGanti aksara rentetan dalam javascriptMar 11, 2025 am 12:07 AM

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Bina Aplikasi Web Ajax anda sendiriBina Aplikasi Web Ajax anda sendiriMar 09, 2025 am 12:11 AM

Jadi di sini anda, bersedia untuk mempelajari semua perkara ini yang dipanggil Ajax. Tetapi, apa sebenarnya? Istilah Ajax merujuk kepada kumpulan teknologi longgar yang digunakan untuk membuat kandungan web yang dinamik dan interaktif. Istilah Ajax, yang asalnya dicipta oleh Jesse J

10 JQuery Fun and Games Plugin10 JQuery Fun and Games PluginMar 08, 2025 am 12:42 AM

10 Plugin Permainan JQuery yang menyeronokkan untuk menjadikan laman web anda lebih menarik dan meningkatkan keletihan pengguna! Walaupun Flash masih merupakan perisian terbaik untuk membangunkan permainan web kasual, jQuery juga boleh menghasilkan kesan yang mengejutkan, dan walaupun tidak setanding dengan permainan flash aksi tulen, dalam beberapa kes, anda juga boleh bersenang -senang di penyemak imbas anda. permainan jquery tic toe "Hello World" pengaturcaraan permainan kini mempunyai versi jQuery. Kod sumber JQuery Game Composition Crazy Word Ini adalah permainan mengisi kosong, dan ia dapat menghasilkan beberapa hasil yang pelik kerana tidak mengetahui konteks perkataan. Kod sumber JQuery Mine Sweeping Game

Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri?Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri?Mar 18, 2025 pm 03:12 PM

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

JQuery Parallax Tutorial - Latar Belakang Header AnimasiJQuery Parallax Tutorial - Latar Belakang Header AnimasiMar 08, 2025 am 12:39 AM

Tutorial ini menunjukkan cara membuat kesan latar belakang paralaks yang menawan menggunakan jQuery. Kami akan membina sepanduk header dengan imej berlapis yang mewujudkan kedalaman visual yang menakjubkan. Plugin yang dikemas kini berfungsi dengan JQuery 1.6.4 dan kemudian. Muat turun

Kandungan Div Refresh Auto Menggunakan JQuery dan AjaxKandungan Div Refresh Auto Menggunakan JQuery dan AjaxMar 08, 2025 am 12:58 AM

Artikel ini menunjukkan bagaimana untuk menyegarkan semula kandungan div secara automatik setiap 5 saat menggunakan jQuery dan Ajax. Contohnya mengambil dan memaparkan catatan blog terkini dari suapan RSS, bersama -sama dengan timestamp refresh terakhir. Imej pemuatan adalah opsyena

Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas?Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas?Mar 18, 2025 pm 03:14 PM

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

Bermula dengan Matter.js: PengenalanBermula dengan Matter.js: PengenalanMar 08, 2025 am 12:53 AM

Matter.js adalah enjin fizik badan tegar 2D yang ditulis dalam JavaScript. Perpustakaan ini dapat membantu anda dengan mudah mensimulasikan fizik 2D dalam penyemak imbas anda. Ia menyediakan banyak ciri, seperti keupayaan untuk mencipta badan yang tegar dan menetapkan sifat fizikal seperti jisim, kawasan, atau ketumpatan. Anda juga boleh mensimulasikan pelbagai jenis perlanggaran dan daya, seperti geseran graviti. Matter.js menyokong semua pelayar arus perdana. Di samping itu, ia sesuai untuk peranti mudah alih kerana ia mengesan sentuhan dan responsif. Semua ciri-ciri ini menjadikannya bernilai masa untuk belajar menggunakan enjin, kerana ini memudahkan untuk membuat permainan atau simulasi 2D berasaskan fizik. Dalam tutorial ini, saya akan merangkumi asas -asas perpustakaan ini, termasuk pemasangan dan penggunaannya, dan menyediakan

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod