Saya menggunakan Bootstrap dan AngularJS di aplikasi web saya. Saya mengalami kesulitan untuk membuat keduanya bekerja sama.
Saya memiliki elemen, yang memiliki atribut data-provide="typeahead"
<input id="searchText" ng-model="searchText" type="text"
class="input-medium search-query" placeholder="title"
data-provide="typeahead" ng-change="updateTypeahead()" />
Dan saya ingin memperbarui data-source
atribut ketika pengguna memasukkan di lapangan. Fungsinya updateTypeahead
dipicu dengan benar, tetapi saya tidak memiliki akses ke elemen yang memicu acara tersebut, kecuali saya menggunakan $('#searchText')
, yang merupakan cara jQuery, bukan cara AngularJS.
Apa cara terbaik untuk membuat AngularJS bekerja dengan modul JS gaya lama.
sumber
<li ng-repeat="item in items" role="menuitem" ng-class="{\'selected\' : isSelected($event, item)}">
Cara Angular umum untuk mendapatkan akses ke elemen yang memicu peristiwa adalah dengan menulis direktif dan bind () ke acara yang diinginkan:
atau dengan DDO (sesuai komentar @ tpartee di bawah):
Arahan di atas dapat digunakan sebagai berikut:
Plunker .
Ketik di kolom teks, lalu biarkan / buram. Fungsi ubah panggilan balik akan aktif. Di dalam fungsi panggilan balik itu, Anda memiliki akses ke
element
.Beberapa direktif bawaan mendukung penerusan objek $ event. Misalnya, ng- * klik, ng-Mouse *. Perhatikan bahwa ng-change tidak mendukung acara ini.
Meskipun Anda bisa mendapatkan elemen melalui objek $ event:
ini berjalan "jauh berlawanan dengan cara Angular" - Misko .
sumber
Anda bisa mendapatkan dengan mudah seperti acara tulis pertama pada elemen ini
dan di file js Anda seperti di bawah ini
Saya telah menggunakannya juga.
sumber
Ada solusi menggunakan $ element di controller jika Anda tidak ingin membuat direktif lain untuk masalah ini:
Dan ini akan bekerja dengan ng-change :
sumber
jika Anda ingin ng-model value, jika Anda dapat menulis seperti ini di event yang dipicu: $ scope.searchText
sumber
Saya tidak yakin versi mana yang Anda miliki, tetapi pertanyaan ini sudah lama ditanyakan. Saat ini dengan Angular 1.5, saya dapat menggunakan
ng-keypress
acara dandebounce
fungsi dari Lodash untuk meniru perilaku serupang-change
, jadi saya dapat menangkap $ eventsumber
Untuk meneruskan elemen sumber di Angular 5:
sumber