Saat ini saya memiliki halaman Angular.js yang memungkinkan pencarian dan menampilkan hasil. Pengguna mengklik hasil pencarian, lalu mengklik tombol kembali. Saya ingin hasil pencarian ditampilkan lagi tetapi saya tidak dapat menemukan cara untuk memicu pencarian untuk dieksekusi. Inilah detailnya:
- Halaman Angular.js saya adalah halaman pencarian, dengan bidang pencarian dan tombol pencarian. Pengguna dapat secara manual mengetik kueri dan menekan tombol dan dan ajax kueri dipecat dan hasilnya ditampilkan. Saya memperbarui URL dengan istilah pencarian. Itu semua bekerja dengan baik.
- Pengguna mengklik hasil pencarian dan dibawa ke halaman lain - yang berfungsi dengan baik juga.
- Pengguna mengklik tombol kembali, dan kembali ke halaman pencarian sudut saya, dan URL yang benar ditampilkan, termasuk istilah pencarian. Semua berfungsi dengan baik.
- Saya telah mengikat nilai bidang pencarian ke istilah pencarian di URL, sehingga mengandung istilah pencarian yang diharapkan. Semua berfungsi dengan baik.
Bagaimana cara mendapatkan fungsi pencarian untuk dieksekusi lagi tanpa pengguna harus menekan "tombol pencarian"? Jika itu jquery maka saya akan menjalankan fungsi dalam fungsi documentready. Saya tidak dapat melihat padanan Angular.js.
$routepProvider
? Gunakan untuk terhubung ke layanan di aplikasi Anda yang menyediakan data untuk hasil pencarian. Jangan berpikir secaradocument.ready
istilah seperti dengan jQuery. Sulit banyak membantu tanpa melihat bagaimana Anda telah mencari kabel saat iniJawaban:
Di satu sisi seperti @ Mark-Rajcok katakan Anda hanya bisa pergi dengan fungsi batin pribadi:
Anda juga dapat melihat arahan ng-init . Implementasinya akan sangat mirip:
Tetapi berhati-hatilah karena itu menyiratkan dokumentasi sudut (karena v1.2) untuk TIDAK digunakan
ng-init
untuk itu. Namun demikian itu tergantung pada arsitektur aplikasi Anda.Saya menggunakan
ng-init
ketika saya ingin memberikan nilai dari back-end ke aplikasi sudut:sumber
myCtrl
controller baru dibuat dan dijalankan.<div smth on-init="doWhatever()">
. Tentu saja itu tergantung pada kasus penggunaan tertentu.Coba ini?
sumber
Saya tidak pernah bisa
$viewContentLoaded
bekerja untuk saya, danng-init
harus benar-benar hanya digunakan dalamng-repeat
(sesuai dengan dokumentasi), dan juga memanggil fungsi langsung di controller dapat menyebabkan kesalahan jika kode bergantung pada elemen yang belum didefinisikan. .Inilah yang saya lakukan dan ini bekerja untuk saya:
Kecuali Anda menggunakan
ui-router
. Maka itu:sumber
$scope.$on('$routeChangeSuccess'
memadamkan setiap parameter waktu di url berubah (via$location
misalnya), dan dengan demikian Anda dapat menggunakan hanya$scope.$on('$locationChangeSuccess'
. Jika Anda memerlukan pemicu saat memuat / memuat kembali laman, Anda dapat menggunakan$scope.$watch('$viewContentLoaded'
seperti yang disarankan di sini. Itu tidak akan menyala selama perubahan parameter url.sumber
$scope
dan bukannya bekerja denganthis
.Solusi Dimitri / Mark tidak berfungsi untuk saya tetapi menggunakan fungsi $ timeout tampaknya berfungsi dengan baik untuk memastikan kode Anda hanya berjalan setelah markup diberikan.
Semoga ini bisa membantu.
sumber
Anda dapat melakukan ini jika Anda ingin menonton objek DOM viewContentLoaded berubah dan kemudian melakukan sesuatu. menggunakan $ scope. $ on berfungsi juga tetapi berbeda terutama ketika Anda memiliki satu mode halaman pada perutean Anda.
sumber
Anda dapat menggunakan objek $ window angular:
sumber
Alternatif lain:
(via https://stackoverflow.com/a/30258904/148412 )
sumber
Alternatif lain jika Anda memiliki pengontrol khusus untuk halaman itu:
sumber
Saat menggunakan $ routeProvider Anda dapat menyelesaikan .state dan mem-bootstrap layanan Anda. Ini artinya, Anda akan memuat Pengontrol dan Tampilan, hanya setelah menyelesaikan Layanan Anda:
rute ui
Layanan
sumber
Jawaban Dmitry Evseev yang ditemukan cukup berguna.
Kasus 1: Menggunakan angularJs saja:
Untuk mengeksekusi metode pada pemuatan halaman, Anda dapat menggunakan
ng-init
dalam view dan mendeklarasikan metode init di controller, karena mengatakan bahwa penggunaan fungsi yang lebih berat tidak disarankan, seperti pada Documents angular pada ng-init :HTML:
Pengendali:
Peringatan: Jangan gunakan pengontrol ini untuk tampilan lain yang dimaksudkan untuk maksud berbeda karena akan menyebabkan metode pencarian dieksekusi di sana juga.
Kasus 2: Menggunakan Ionic:
Kode di atas akan berfungsi, pastikan cache tampilan dinonaktifkan
route.js
sebagai:route.js
Semoga ini membantu
sumber
cache: false
melakukannya untuk saya - terima kasih!Saya memiliki masalah yang sama dan hanya solusi ini yang bekerja untuk saya (ini menjalankan fungsi setelah DOM lengkap telah dimuat). Saya menggunakan ini untuk gulir ke jangkar setelah halaman dimuat:
sumber
Anda dapat menyimpan hasil pencarian di layanan umum yang dapat digunakan dari mana saja dan tidak jelas saat menavigasi ke halaman lain, dan kemudian Anda dapat mengatur hasil pencarian dengan data yang disimpan untuk klik tombol kembali
Untuk tombol punggung Anda
sumber
memanggil metode awal di dalam fungsi inisialisasi diri.
sumber