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
Aplikasi JavaScript: Dari Front-End ke Back-EndAplikasi JavaScript: Dari Front-End ke Back-EndMay 04, 2025 am 12:12 AM

JavaScript boleh digunakan untuk pembangunan front-end dan back-end. Bahagian depan meningkatkan pengalaman pengguna melalui operasi DOM, dan back-end mengendalikan tugas pelayan melalui Node.js. 1. Contoh front-end: Tukar kandungan teks laman web. 2. Contoh backend: Buat pelayan Node.js.

Python vs JavaScript: Bahasa mana yang harus anda pelajari?Python vs JavaScript: Bahasa mana yang harus anda pelajari?May 03, 2025 am 12:10 AM

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

Rangka Kerja JavaScript: Menguasai Pembangunan Web ModenRangka Kerja JavaScript: Menguasai Pembangunan Web ModenMay 02, 2025 am 12:04 AM

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

Hubungan antara JavaScript, C, dan penyemak imbasHubungan antara JavaScript, C, dan penyemak imbasMay 01, 2025 am 12:06 AM

Pengenalan Saya tahu anda mungkin merasa pelik, apa sebenarnya yang perlu dilakukan oleh JavaScript, C dan penyemak imbas? Mereka seolah -olah tidak berkaitan, tetapi sebenarnya, mereka memainkan peranan yang sangat penting dalam pembangunan web moden. Hari ini kita akan membincangkan hubungan rapat antara ketiga -tiga ini. Melalui artikel ini, anda akan mempelajari bagaimana JavaScript berjalan dalam penyemak imbas, peranan C dalam enjin pelayar, dan bagaimana mereka bekerjasama untuk memacu rendering dan interaksi laman web. Kita semua tahu hubungan antara JavaScript dan penyemak imbas. JavaScript adalah bahasa utama pembangunan front-end. Ia berjalan secara langsung di penyemak imbas, menjadikan laman web jelas dan menarik. Adakah anda pernah tertanya -tanya mengapa Javascr

Aliran node.js dengan typescriptAliran node.js dengan typescriptApr 30, 2025 am 08:22 AM

Node.js cemerlang pada I/O yang cekap, sebahagian besarnya terima kasih kepada aliran. Aliran memproses data secara berperingkat, mengelakkan beban memori-ideal untuk fail besar, tugas rangkaian, dan aplikasi masa nyata. Menggabungkan sungai dengan keselamatan jenis typescript mencipta powe

Python vs JavaScript: Pertimbangan Prestasi dan KecekapanPython vs JavaScript: Pertimbangan Prestasi dan KecekapanApr 30, 2025 am 12:08 AM

Perbezaan prestasi dan kecekapan antara Python dan JavaScript terutamanya dicerminkan dalam: 1) sebagai bahasa yang ditafsirkan, Python berjalan perlahan tetapi mempunyai kecekapan pembangunan yang tinggi dan sesuai untuk pembangunan prototaip pesat; 2) JavaScript adalah terhad kepada benang tunggal dalam penyemak imbas, tetapi I/O multi-threading dan asynchronous boleh digunakan untuk meningkatkan prestasi dalam node.js, dan kedua-duanya mempunyai kelebihan dalam projek sebenar.

Asal JavaScript: Meneroka Bahasa PelaksanaannyaAsal JavaScript: Meneroka Bahasa PelaksanaannyaApr 29, 2025 am 12:51 AM

JavaScript berasal pada tahun 1995 dan dicipta oleh Brandon Ike, dan menyedari bahasa itu menjadi C. 1.C Language menyediakan keupayaan pengaturcaraan prestasi tinggi dan sistem untuk JavaScript. 2. Pengurusan memori JavaScript dan pengoptimuman prestasi bergantung pada bahasa C. 3. Ciri lintas platform bahasa C membantu JavaScript berjalan dengan cekap pada sistem operasi yang berbeza.

Di sebalik tabir: Apa bahasa JavaScript?Di sebalik tabir: Apa bahasa JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript berjalan dalam penyemak imbas dan persekitaran Node.js dan bergantung pada enjin JavaScript untuk menghuraikan dan melaksanakan kod. 1) menjana pokok sintaks abstrak (AST) di peringkat parsing; 2) menukar AST ke bytecode atau kod mesin dalam peringkat penyusunan; 3) Laksanakan kod yang disusun dalam peringkat pelaksanaan.

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual