1. Apa perbedaan antara ng-show/ng-hide dan ng-if?
Kita semua tahu ng-show/ng-hide sebenarnya disembunyikan dan ditampilkan melalui display . Dan ng-if benar-benar mengontrol penambahan dan penghapusan node dom untuk mencapainya. Oleh karena itu, jika kita memuat simpul dom sesuai dengan kondisi yang berbeda, maka kinerja ng-if lebih baik ng-show .
2. Jelaskan apa itu $ rootcrope dan perbedaan dari $ scope?
Dalam istilah awam, halaman $rootScrope adalah ayah $scope .
Mari kita lihat cara menghasilkan $rootScope dan $scope .
Langkah1: Parses Angular ng-app dan Membuat $rootScope dalam Memori.
Langkah2: Angular akan terus mengurai, temukan ekspresi {{}} , dan parsing ke dalam variabel.
Langkah3: Div dengan ng-controller kemudian akan diuraikan dan menunjuk ke fungsi controller . Pada saat ini, fungsi controller menjadi instance dari objek $scope .
3. Bagaimana ekspresi {{yourmodel}} berfungsi?
Itu tergantung pada layanan $interpolation . Setelah menginisialisasi halaman HTML, ia akan menemukan ekspresi ini dan menandai mereka. Jadi setiap kali bertemu {{}} , A $watch akan ditetapkan. $interpolation akan mengembalikan fungsi dengan parameter konteks. Akhirnya, fungsi dieksekusi, dan dianggap sebagai ekspresi $parse untuk ruang lingkup itu.
4. Apa siklus pencernaan dalam sudut?
Dalam setiap siklus digest , sudut akan selalu membandingkan nilai model pada scope . Secara umum, siklus digest secara otomatis dipicu, dan kami juga dapat menggunakan $apply untuk pemicu manual.
5. Bagaimana cara membatalkan $ timeout dan menghentikan $ watch ()?
Hentikan $timeout kita dapat menggunakan cancel :
var customTimeout = $ timeout (function () {// kode Anda}, 1000); $ timeout.cancel (customTimeOut);Hentikan A $ Watch:
//. $ watch () akan mengembalikan fungsi yang menghentikan fungsi pendaftaran yang kami simpan ke variabel var deregisterwatchfn = $ rootscope. $ watch ('someGloballyvailableProperty', function (newVal) {if (newVal) {// kami meminta fungsi deregistrasi, untuk tidak dapat menonton dererg dererg (dereger (// {// memunculkan fungsi deregistrasi, untuk tidak dapat menamakan dererg Dererg (DereGner (Dere) {// memunculkan deregistrasi deregistrasi, untuk tidak dapat menamakan dererg (DereGner (Dere) {// Dere (newVal) {// {// {// newVal;6. Bagaimana cara mengatur pembatasan dalam arahan sudut? Apa perbedaan antara @, =, & dalam lingkup?
restrict dapat diatur secara terpisah:
Atribut kecocokan
E tag pertandingan
Kelas pertandingan C.
M CATCH COMMENT
Tentu saja Anda dapat mengatur beberapa nilai seperti AEC untuk membuat beberapa kecocokan.
Dalam scope , @, =, & masing -masing dinyatakan saat melakukan pengikatan nilai
@ Dapatkan string set, yang dapat diatur dengan sendirinya atau diikat menggunakan {{yourModel}} ;
= Ikatan dua arah, mengikat beberapa properti pada scope ;
& digunakan untuk menjalankan beberapa ekspresi pada scope induk. Kami menetapkan beberapa fungsi yang perlu dieksekusi.
angular.module ('DocSisolationExample', []) .controller ('controller', ['$ scope', function ($ scope) {$ scope.alertname = function () {waspada ('scope & {{' {'{' {'{' {'{' {'{' {'{' Template: '<tombol ng-klik = "testClick ()"> klik saya </button>', controller: function ($ scope) {$ scope.testClick = function () {$ scope.clickhandle ();<Div ng-app = "DocSisolationExample"> <Div ng-controller = "controller"> <my-customer click-handle = "waspada ()"> </pestomer> </div> </div>
<Lakukan ikatan satu arah.
7. Daftar setidaknya tiga cara untuk mewujudkan komunikasi antara berbagai modul?
1. Layanan
2. Acara, tentukan acara terikat
3. Gunakan $ Rootscope
4. Gunakan langsung $ Parent, $$ Childhead, dll. Antara pengontrol
5. Petunjuk Menentukan atribut untuk pengikatan data
8. Langkah -langkah apa yang dapat meningkatkan kinerja sudut
Direkomendasikan secara resmi, tutup debug , $compileProvider
myapp.config (function ($ compileProvider) {$ compileProvider.DebugInfoEnabled (false);}); Gunakan satu ekspresi mengikat, mis. {{::yourModel}}
Kurangi jumlah pengamat
Hindari menggunakan ng-repeat dalam pemuatan gulir tak terbatas
Gunakan gadget pengujian kinerja untuk mengeksplorasi masalah kinerja sudut Anda. Kita dapat menggunakan console.time() atau menggunakan alat pengembang dan Batarang
console.time ("timername"); // codeconsole.timeEnd Anda ("timername");9. Apakah menurut Anda baik menggunakan jQuery di sudut?
Ini adalah pertanyaan terbuka, dan meskipun ada banyak perdebatan seperti itu di internet, umumnya diyakini bahwa ini bukan upaya yang sangat baik. Faktanya, ketika kita belajar Angular, kita harus menerima gagasan Angular dari 0, pengikatan data, menggunakan beberapa API yang bersudut, rute secara wajar dan mengatur, menulis instruksi dan layanan terkait, dll. Angular hadir dengan banyak API yang dapat sepenuhnya menggantikan API yang umum digunakan di jquery. Kita dapat menggunakan Angular.element, $ http, $ timeout, ng-init, dll.
Kami mungkin juga mengubah perspektif. Jika kebutuhan bisnis diperlukan, dan untuk pendatang baru (lebih akrab dengan jQuery), mungkin pengenalan jQuery Anda dapat membantu menyelesaikan masalah, seperti menggunakan plug-in, tentu saja, ini untuk meningkatkan efisiensi kerja dengan mempengaruhi organisasi kode. Dengan memperdalam pemahaman sudut, beberapa kode yang diperkenalkan ketika jQuery akan secara bertahap ditinggalkan selama rekonstruksi. (?po adalah orang seperti itu. Saya harap Anda tidak akan diejek, tetapi bisnisnya diusir)
Jadi saya pikir pasti salah untuk mengatakan bahwa dua kerangka kerja tidak dapat digunakan bersama sama sekali, tetapi kita masih harus mencoba yang terbaik untuk mengikuti desain sudut.
10. Cara melakukan tes unit sudut
Kita dapat menggunakan Karam + Jasmine untuk pengujian unit. Kami memperkenalkan aplikasi sudut melalui Ngmock dan kemudian menambahkan kasus tes kami sendiri. Kode tes sederhana:
jelaskan ('calculator', function () {beforeeach (module ('calculatorApp')); var $ controller; Sebelumeach (inject (function (_ $ controller _) {$ controller = _ $ controller_;})); jelas ('sum', function () {it ('1 + 1 harus sama dengan 2', function () {) {var $ $ () {it ('1 + 1 harus sama dengan 2', function () {) {var $ $ () {it ('1 + 1 harus sama dengan 2', function () {) {var $ $ () {'1 + 1 harus sama dengan 2', function () {) {var $ $ controller (calculatorController ', {$ scope: $ scope});11. Ringkasan
Di atas adalah seluruh konten artikel ini. Saya berharap ini akan membantu untuk belajar dan bekerja semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan pesan untuk didiskusikan.