Lihat di sini untuk CodePen yang menunjukkan perbedaan cara kerja ng-if / ng-show, DOM-bijaksana.
@markovuksanovic telah menjawab pertanyaan dengan baik. Tapi saya datang dari perspektif lain: Saya selalu menggunakan ng-if
dan mengeluarkan elemen-elemen itu dari DOM, kecuali:
- Anda karena suatu alasan memerlukan data-binding dan
$watch
-es pada elemen Anda untuk tetap aktif saat mereka tidak terlihat. Formulir mungkin merupakan kasus yang bagus untuk ini, jika Anda ingin dapat memeriksa validitas pada input yang saat ini tidak terlihat, untuk menentukan apakah seluruh formulir valid.
- Anda menggunakan beberapa logika stateful yang sangat rumit dengan penangan event bersyarat, seperti yang disebutkan di atas. Yang mengatakan , jika Anda menemukan diri Anda secara manual melampirkan dan melepaskan penangan, sehingga Anda kehilangan status penting ketika Anda menggunakan ng-jika, tanyakan pada diri sendiri apakah keadaan itu akan lebih terwakili dalam model data, dan penangan diterapkan secara kondisional oleh arahan setiap kali elemen diberikan. Dengan kata lain, ada / tidaknya penangan adalah bentuk data negara. Keluarkan data itu dari DOM, dan masuk ke dalam model. Ada / tidaknya penangan harus ditentukan oleh data, dan dengan demikian mudah dibuat ulang.
Angular ditulis dengan sangat baik. Ini cepat, mengingat apa yang dilakukannya. Tapi yang dilakukannya adalah sejumlah sihir yang membuat hal-hal sulit (seperti pengikatan data 2 arah) terlihat mudah. Membuat semua hal itu terlihat mudah memerlukan beberapa overhead kinerja. Anda mungkin terkejut mengetahui berapa ratus atau ribuan kali fungsi setter dievaluasi selama $digest
siklus pada sebongkah DOM yang bahkan tidak ada yang melihatnya. Dan kemudian Anda menyadari bahwa Anda memiliki puluhan atau ratusan elemen tak kasat mata yang semuanya melakukan hal yang sama ...
Desktop mungkin memang cukup kuat untuk membuat sebagian besar masalah kecepatan eksekusi JS bisa diperdebatkan. Tetapi jika Anda sedang mengembangkan untuk seluler, menggunakan ng-jika kapan pun memungkinkan secara manusia seharusnya tidak perlu khawatir. Kecepatan JS masih penting pada prosesor seluler. Menggunakan ng-if adalah cara yang sangat mudah untuk mendapatkan optimasi yang berpotensi signifikan dengan biaya yang sangat, sangat rendah.