Jan Varwig menulis tentang peran arahan dalam Angular. Ini bukan jawaban untuk pertanyaan Anda, tetapi untuk beberapa kasus idenya mungkin merupakan alternatif yang baik: jan.varwig.org/archive/angularjs-views-vs-directives/…
Juha Palomäki
sedang melalui tutorial sudut dan memiliki pertanyaan yang sama persis ini, mereka tidak membuat ini sangat jelas, sepertinya konsep yang cukup mendalam ..
qwwqwwq
Jawaban:
100
Anda dapat memiliki satu saja ng-view.
Anda dapat mengubah konten dalam beberapa cara: ng-include, ng-switchatau pengendali pemetaan yang berbeda dan template melalui routeProvider.
pengendali dan templat pemetaan akan menggantikan seluruh elemen tampilan, kan?
zx1986
9
Bagaimana dengan mengubah konten widget secara dinamis? Tidakkah Anda ingin membuat tampilan untuk widget dan pengontrol untuk widget dan model untuk widget?
Ray Suelzer
Apakah disarankan menggunakan tampilan? Bukankah lebih baik untuk mendefinisikan div dengan ng-showdan ng-hidedan untuk mengontrol visibilitas mereka menggunakan variabel? Karena kadang-kadang saya mungkin ingin menyembunyikan / menampilkan beberapa komponen
Sayangnya sebagai readme ui-router mengatakan: Catatan: UI-Router sedang dalam pengembangan aktif. Karena itu, selagi pustaka ini diuji dengan baik, API dapat berubah. Pertimbangkan menggunakannya dalam aplikasi produksi hanya jika Anda merasa nyaman mengikuti changelog dan memperbarui penggunaan Anda.
trainoasis
1
@trainoasis Menggunakannya untuk beberapa proyek, Sepertinya 'sangat' stabil dan sampai sekarang saya tidak punya masalah tentang perubahan API, sebenarnya saya tidak ingat ada perubahan besar pada API.
Morteza Ziyae
19
Saya percaya Anda dapat mencapainya hanya dengan memiliki lajang ng-view. Di templat utama Anda dapat memiliki ng-includebagian untuk tampilan sub, kemudian di controller utama tentukan properti model untuk setiap sub templat. Sehingga mereka akan mengikat secara otomatis ke ng-includebagian. Ini sama dengan memiliki banyakng-view
Anda dapat memeriksa contoh yang diberikan dalam ng-includedokumentasi
dalam contoh ketika Anda mengubah template dari daftar dropdown itu mengubah konten. Di sini diasumsikan Anda memiliki satu utama ng-viewdan alih-alih memilih secara manual sub konten dengan memilih drop down, Anda melakukannya seperti ketika tampilan utama dimuat.
Dengan tidak adanya solusi seperti UI-Router, ng-include memang merupakan alternatif yang layak, seperti yang telah Anda jelaskan. Yang tidak bisa dicapai oleh ng-memasukkan adalah URL (negara bagian) didorong multi tampilan, $ rute tidak dapat secara dinamis membuat tampilan berbeda berdasarkan URL saat ini. Kita dapat memutar lengan Angular dan mewujudkannya dengan menggunakan logika kustom di controller, seperti contoh dalam ng-includedokumentasi , tetapi tidak diinginkan pola arsitektur aplikasi, UI-Router adalah jenis solusi yang tepat.
Yiling
Satu plus untuk @Yiling komentar. Menggunakan ng-include adalah solusi.
Farshid Saberi
13
Menggunakan ng-viewmodul biasa, Anda tidak dapat memiliki lebih dari satu template dinamis.
Namun, proyek ini memungkinkan Anda untuk melakukannya (mencari ui-router).
angular-ui sepertinya pilihan yang baik dalam waktu dekat tetapi masih sangat tidak stabil untuk penggunaan produksi
David Barreto
8
Dimungkinkan untuk memiliki banyak atau beberapa tampilan bersarang. Tapi tidak dengan ng-view.
Modul perutean primer dalam sudut tidak mendukung banyak tampilan. Tapi Anda bisa menggunakan ui-router. Ini adalah modul pihak ketiga yang bisa Anda dapatkan melalui Github, angular-ui / ui-router, https://github.com/angular-ui/ui-router . Versi baru ngRouter (ngNewRouter) saat ini sedang dikembangkan. Saat ini tidak stabil. Jadi saya memberi Anda contoh memulai sederhana dengan ui-router. Dengan menggunakannya, Anda dapat memberi nama tampilan dan menentukan templat dan pengendali mana yang harus digunakan untuk rendering. Menggunakan $ stateProvider Anda harus menentukan bagaimana penampung tampilan harus dirender untuk keadaan tertentu.
Terima kasih Farshid ini Luar Biasa! Itu harus disebutkan dalam repositori Github angular-ui / ui-router github.com/angular-ui/ui-router di mana saya mendapatkan modul
totallytotallyamazing
Saya tidak yakin mengapa Anda harus melakukan itu. Mengapa tidak memasukkan header / footer dan melihat konten?
user441521
ng-include akan berfungsi jika file di-host, misalnya. pada nodejs. Jika bekerja dengan direktori lokal, itu akan menimbulkan kesalahan lintas domain.
Sid
0
Anda tidak dapat memiliki banyak tampilan ng. Di bawah ini adalah kasus penggunaan saya di mana saya menyelesaikan kebutuhan saya. Saya ingin memiliki tab perilaku di dialog model saya. Saya menghadapi masalah ketika klik pada tab yang memiliki hyperlink yang akan memunculkan tautan router. Saya memecahkan ini menggunakan tombol dan css untuk tab. Ketika pengguna mengklik pada tab, itu sebenarnya tidak akan memanggil hyperlink apa pun yang akan selalu memanggil ng-router. Ketika pengguna mengklik pada tab itu akan memanggil metode, di mana saya secara dinamis memuat html. Di bawah ini adalah fungsi pada klik tab
Jawaban:
Anda dapat memiliki satu saja
ng-view
.Anda dapat mengubah konten dalam beberapa cara:
ng-include
,ng-switch
atau pengendali pemetaan yang berbeda dan template melalui routeProvider.sumber
ng-show
danng-hide
dan untuk mengontrol visibilitas mereka menggunakan variabel? Karena kadang-kadang saya mungkin ingin menyembunyikan / menampilkan beberapa komponenUI-Router adalah proyek yang dapat membantu: https://github.com/angular-ui/ui-router Salah satu fiturnya adalah Multiple Named Views
UI-Router memiliki banyak fitur dan saya sarankan Anda menggunakannya jika Anda bekerja pada aplikasi canggih.
Periksa dokumentasi Multi Named Views di sini .
sumber
Saya percaya Anda dapat mencapainya hanya dengan memiliki lajang
ng-view
. Di templat utama Anda dapat memiliking-include
bagian untuk tampilan sub, kemudian di controller utama tentukan properti model untuk setiap sub templat. Sehingga mereka akan mengikat secara otomatis keng-include
bagian. Ini sama dengan memiliki banyakng-view
Anda dapat memeriksa contoh yang diberikan dalam
ng-include
dokumentasidalam contoh ketika Anda mengubah template dari daftar dropdown itu mengubah konten. Di sini diasumsikan Anda memiliki satu utama
ng-view
dan alih-alih memilih secara manual sub konten dengan memilih drop down, Anda melakukannya seperti ketika tampilan utama dimuat.sumber
ng-include
dokumentasi , tetapi tidak diinginkan pola arsitektur aplikasi, UI-Router adalah jenis solusi yang tepat.Menggunakan
ng-view
modul biasa, Anda tidak dapat memiliki lebih dari satu template dinamis.Namun, proyek ini memungkinkan Anda untuk melakukannya (mencari
ui-router
).sumber
Dimungkinkan untuk memiliki banyak atau beberapa tampilan bersarang. Tapi tidak dengan ng-view.
Modul perutean primer dalam sudut tidak mendukung banyak tampilan. Tapi Anda bisa menggunakan ui-router. Ini adalah modul pihak ketiga yang bisa Anda dapatkan melalui Github, angular-ui / ui-router, https://github.com/angular-ui/ui-router . Versi baru ngRouter (ngNewRouter) saat ini sedang dikembangkan. Saat ini tidak stabil. Jadi saya memberi Anda contoh memulai sederhana dengan ui-router. Dengan menggunakannya, Anda dapat memberi nama tampilan dan menentukan templat dan pengendali mana yang harus digunakan untuk rendering. Menggunakan $ stateProvider Anda harus menentukan bagaimana penampung tampilan harus dirender untuk keadaan tertentu.
Anda perlu merujuk angularjs, dan angular-ui.router untuk sampel ini.
sumber
Anda tidak dapat memiliki banyak tampilan ng. Di bawah ini adalah kasus penggunaan saya di mana saya menyelesaikan kebutuhan saya. Saya ingin memiliki tab perilaku di dialog model saya. Saya menghadapi masalah ketika klik pada tab yang memiliki hyperlink yang akan memunculkan tautan router. Saya memecahkan ini menggunakan tombol dan css untuk tab. Ketika pengguna mengklik pada tab, itu sebenarnya tidak akan memanggil hyperlink apa pun yang akan selalu memanggil ng-router. Ketika pengguna mengklik pada tab itu akan memanggil metode, di mana saya secara dinamis memuat html. Di bawah ini adalah fungsi pada klik tab
Pertanyaan Pengguna $ template. Di halaman test_template.html tambahkan konten html Anda. Konten html ini akan mengikat ke controller Anda.
sumber