Saya memiliki fungsi yang ingin saya panggil setelah konten halaman dimuat. Saya membaca tentang $ viewContentLoaded dan tidak berfungsi untuk saya. Saya mencari sesuatu seperti
document.addEventListener('DOMContentLoaded', function () {
//Content goes here
}, false);
Panggilan di atas tidak bekerja untuk saya di pengontrol AngularJs.
Jawaban:
Menurut dokumentasi $ viewContentLoaded , seharusnya berfungsi
$viewContentLoaded
acara dipancarkan yang berarti untuk menerima acara ini Anda memerlukan pengendali orang tua sepertiDari
MainCtrl
Anda dapat mendengarkan acara tersebutPeriksa Demo
sumber
ng-repeat
dan beberapa arahan bersarang yang akan menghasilkan HTML / Konten berdasarkan loop dan kondisi yang kompleks. Rendering berlanjut selama beberapa waktu, bahkan setelah$viewContentLoaded
peristiwa dipicu. Bagaimana Anda dapat memastikan bahwa semua elemen telah sepenuhnya diberikan kemudian jalankan kode tertentu? Ada umpan balik?Angular <1,6.X
Angular> = 1.6.X
sumber
diperbaiki - 2015.06.09
Gunakan metode arahan dan elemen sudut
ready
seperti:js
html
atau bagi mereka yang menggunakan sintaks controller-as ...
Manfaat dari ini adalah Anda bisa seluas atau granular dengan UI yang Anda inginkan dan Anda menghapus logika DOM dari pengontrol Anda. Saya berpendapat ini adalah cara Angular yang direkomendasikan .
Anda mungkin perlu memprioritaskan arahan ini jika Anda memiliki arahan lain yang beroperasi pada node yang sama.
sumber
elem.ready( $scope.$apply( readyFunc( $scope )));
ide mengapa itu mungkin terjadi? Mungkin pembaruan ke sudut terjadi? Bagaimanapun - ini adalah pendekatan yang elegan, jika itu bisa berhasil.attrs.onReady
, seharusnya seperti sekarang. Masalah lainnya adalah saya menyebutnya funky ... ... apa yang saya dapat untuk mengkonversi kopi dari memori ke JS.$timeout
; Anda secara eksplisit membuat addt. Node DOM hanya untuk menjalankan logika non-dom; Ini hanya dapat digunakan kembali jika metode itu berada jauh di hirarki $ scope sehingga lingkup anak mewarisinya; Saya hanya berpikir itu terlihat buruk dalam perspektif NG;$timeout(function() {})
sekitarelem.ready()
. Kalau tidak, itu melempar$digest already in progress
kesalahan. Tapi bagaimanapun, terima kasih banyak! Saya telah berjuang dengan ini selama satu jam terakhir.Anda dapat langsung menyebutnya dengan menambahkan
{{YourFunction()}}
setelah elemen HTML.Ini dia
Plunker Link
.sumber
Saya harus menerapkan logika ini saat menangani dengan grafik Google. Apa yang saya lakukan adalah bahwa pada akhir definisi pengontrol html saya di dalam saya menambahkan.
dan dalam fungsi itu cukup panggil logika Anda.
sumber
Metode di atas bekerja untuk saya
sumber
Anda dapat memanggil versi javascript acara onload di sudut js. acara ng-load ini dapat diterapkan ke elemen dom seperti div, span, body, iframe, img dll. berikut ini adalah tautan untuk menambahkan ng-load di proyek Anda yang sudah ada.
unduh ng-load untuk angular js
Berikut ini adalah contoh untuk iframe, setelah dimuat testCallbackFunction akan dipanggil di controller
CONTOH
JS
HTML
sumber
Jika Anda mendapatkan $ digest sudah dalam kesalahan yang sedang berjalan, ini mungkin membantu:
sumber
Berjalan setelah pemuatan halaman sebagian harus dipenuhi dengan menyetel pendengar acara ke acara pemuatan jendela
Di dalam
module.run(function()...)
sudut Anda akan memiliki semua akses ke struktur modul dan dependensi.Anda dapat
broadcast
danemit
acara untuk jembatan komunikasi.Sebagai contoh:
sumber
Saya menggunakan
{{myFunction()}}
dalam template tetapi kemudian menemukan cara lain di sini menggunakan$timeout
di dalam controller. Kupikir aku akan membaginya, bekerja bagus untukku.sumber
Jika Anda ingin elemen tertentu dimuat sepenuhnya, Gunakan ng-init pada elemen itu.
misalnya
<div class="modal fade" id="modalFacultyInfo" role="dialog" ng-init="initModalFacultyInfo()"> ..</div>
fungsi initModalFacultyInfo () harus ada di controller.
sumber
Saya menemukan bahwa jika Anda memiliki tampilan bersarang - $ viewContentLoaded akan dipicu untuk setiap tampilan bersarang. Saya telah membuat solusi ini untuk menemukan $ viewContentLoaded akhir. Tampaknya berfungsi dengan baik untuk menyetel $ window.prerenderReady seperti yang disyaratkan oleh Prerender (masuk ke .run () di app.js utama):
sumber
sumber
Solusi yang bekerja untuk saya adalah sebagai berikut
Kode pengontrol adalah sebagai berikut
Kode html adalah sebagai berikut
sumber
Saya biasa
setInterval
menunggu konten dimuat. Saya harap ini dapat membantu Anda untuk menyelesaikan masalah itu.sumber
setInterval
sebagai solusi pada tahun 2016 ?