Bolehkah dua halaman berkongsi pengawal semasa penghalaan, seperti
javascript
.state('a', { ... controller : 'aaaController' }) .state('b', { ... controller : 'aaaController' })
Jika ya, adakah pengawal skop bebas atau awam Contohnya, jika saya mengisytiharkan pembolehubah i
dalam pengawal dan menukar nilai i
dalam halaman a, apabila saya membuat laluan ke b Apabila halaman dibuka, adakah nilai i
akan berubah dengan sewajarnya?
Saya juga sedang belajar angularjs baru-baru ini Mengenai masalah yang dinyatakan oleh poster, saya boleh membuat demonstrasi mudah:
Terdapat struktur html berikut, pandangan berbeza, pengawal yang sama
Sebahagian daripada kod pengawal:
Klik pertama butang tunjukkan, hasil output adalah seperti berikut:
Kemudian klik butang tukar kepada 3 dan klik butang tunjukkan sekali lagi Hasilnya adalah seperti berikut:
Dapat dilihat daripada eksperimen ini bahawa walaupun ia adalah pengawal yang sama, skop tersebut sebenarnya adalah dua skop yang tidak berkaitan sama sekali.
Struktur skop juga berbentuk pokok, sepadan dengan struktur dom Struktur html di atas akan mempunyai dua skop.
Mari lihat contoh lain yang jelas:
Lihat konsol
Hasilnya dicetak dua kali, menunjukkan bahawa kaedah itu telah dilaksanakan dua kali. Jika skop dikongsi, ia tidak akan dilaksanakan dua kali.
Ringkasnya: anda mengisytiharkan pembolehubah i dalam pengawal dan menukar nilai i dalam halaman a Apabila anda menghala ke halaman b, nilai i tidak akan berubah
Semoga membantu anda!
Sungguh pelik untuk menggunakannya dengan cara ini, saya tidak pasti sama ada ia boleh digunakan dengan cara ini
Secara peribadi saya rasa penggunaan biasa ialah:
Satu halaman, satu pengawal
Jika anda perlu berkongsi pembolehubah dan kaedah antara pengawal, anda boleh membina perkhidmatan dalam sudut untuk menyimpan pembolehubah dan kaedah Dalam pengawal yang berbeza, hanya masukkan perkhidmatan yang kami tulis
Dokumentasi rasmi juga menyatakan dengan jelas bahawa perkhidmatan digunakan untuk berkongsi kod:
Perkhidmatan
Perkhidmatan sudut ialah objek boleh diganti yang disambungkan bersama menggunakan suntikan kebergantungan (DI). Anda boleh menggunakan perkhidmatan untuk mengatur dan berkongsi kod merentas apl anda.
https://docs.angularjs.org/guide/services
Selepas menukar laluan, kitaran hayat pengawal telah tamat dan
$scope
semasa serta sub-skop telah mati.Jika anda perlu berkongsi data antara berbilang pengawal, anda boleh menggunakan perkhidmatan.