Saya membangun aplikasi web yang dinamis dengan menggunakan AngularJS. Apakah mungkin untuk memiliki banyak ng-view
template sekaligus?
Saya membangun aplikasi web yang dinamis dengan menggunakan AngularJS. Apakah mungkin untuk memiliki banyak ng-view
template sekaligus?
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.
ng-show
dan ng-hide
dan untuk mengontrol visibilitas mereka menggunakan variabel? Karena kadang-kadang saya mungkin ingin menyembunyikan / menampilkan beberapa komponen
UI-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 .
Saya percaya Anda dapat mencapainya hanya dengan memiliki lajang ng-view
. Di templat utama Anda dapat memiliki ng-include
bagian untuk tampilan sub, kemudian di controller utama tentukan properti model untuk setiap sub templat. Sehingga mereka akan mengikat secara otomatis ke ng-include
bagian. Ini sama dengan memiliki banyakng-view
Anda dapat memeriksa contoh yang diberikan dalam ng-include
dokumentasi
dalam 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.
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
).
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.
<body ng-app="main">
<script type="text/javascript">
angular.module('main', ['ui.router'])
.config(['$locationProvider', '$stateProvider', function ($locationProvider, $stateProvider) {
$stateProvider
.state('home', {
url: '/',
views: {
'header': {
templateUrl: '/app/header.html'
},
'content': {
templateUrl: '/app/content.html'
}
}
});
}]);
</script>
<a ui-sref="home">home</a>
<div ui-view="header">header</div>
<div ui-view="content">content</div>
<div ui-view="bottom">footer</div>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.js">
</body>
Anda perlu merujuk angularjs, dan angular-ui.router untuk sampel ini.
$ bower install angular-ui-router
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
self.submit = function(form) {
$templateRequest('resources/items/employee/test_template.html').then(function(template){
var compiledeHTML = $compile(template)($scope);
$("#d").replaceWith(compiledeHTML);
});
Pertanyaan Pengguna $ template. Di halaman test_template.html tambahkan konten html Anda. Konten html ini akan mengikat ke controller Anda.