Örnekle AngularJS ng-view
⚡ Akıllı Özet
AngularJS'deki görünümler, bir sayfanın başka bir sayfaya geçmek yerine içeriğini değiştirmesine olanak tanır; bu da tek sayfa uygulamalarının anlık hissettirmesini sağlar. `ng-view` yönergesi, her rotanın kendi şablonu ve denetleyicisiyle değiştirdiği bölgeyi işaretler.

Tanınmış siteler arasında şunlar yer almaktadır: Gmail Tek Sayfa Uygulamaları (SPA) kavramını kullanın. Kullanıcı farklı bir sayfa istediğinde, uygulama sayfadan ayrılmaz; yeni sayfanın görünümünü mevcut sayfanın içinde gösterir, böylece kullanıcı hiç ayrılmamış gibi hisseder. AngularJS'de de aynı şey, görünümler (views) ve rotalar (routes) kullanılarak elde edilir.
⚠️ Destek bildirimi: AngularJS'ye ulaşıldı 31 Aralık 2021 tarihinde yaşamının sonuna ulaştı. ve daha fazla yama veya güvenlik düzeltmesi almaz. Aşağıdaki yönerge, mevcut AngularJS 1.x uygulamalarının bakımı için geçerliliğini korur; modern uygulamalarda ise durum farklıdır. Açısal eşdeğeri şudur <router-outlet>.
Görünüm Nedir?
Görünüm, kullanıcıya gösterilen içeriktir. Kullanıcının görmek istediği her neyse, uygulamanın buna uygun görünümü görüntülenir.
Görünümleri ve rotaları birleştirmek, bir uygulamayı mantıksal görünümlere böler ve her birini bir rotaya bağlar. kontrolörBu da uygulamanın daha yönetilebilir olmasını sağlar.
Müşterinin siparişleri görüntüleyebildiği ve yeni siparişler verebildiği bir sipariş uygulamasını ele alalım. Aşağıdaki diyagram, uygulamanın nasıl tek sayfa uygulamasına dönüştüğünü göstermektedir.
"Siparişleri Görüntüle" ve "Yeni Siparişler" için ayrı ayrı iki web sayfası yerine, angularjs Aynı sayfada, iki referans bağlantısı aracılığıyla erişilebilen iki farklı görünüm kullanır. #show hem de #new:
- Navigasyon
MyApp/#showSayfadan ayrılmadan Siparişleri Görüntüle görünümünü gösterir. Mevcut sayfanın yalnızca ilgili bölümü yenilenir. - Navigasyon
MyApp/#newYeni Siparişler görünümü için de aynı işlemi yapar.
Bir uygulamayı bu şekilde görünümlere ayırmak, yönetilebilir ve değiştirilmesi kolay olmasını sağlar ve her görünümün, o işlevin iş mantığını içeren karşılık gelen bir denetleyicisi vardır.
AngularJS'de ng-view Direktifi
MKS ngView Direktifler tamamlar $route Bu hizmet, mevcut rotanın oluşturulmuş şablonunu ana düzen dosyasına dahil ederek sağlanır, normalde index.html.
Geçerli rota her değiştiğinde, dahil edilen görünüm de buna göre değişir. $route Sayfanın yeniden yüklenmesine gerek kalmadan yapılandırma. rotalar Bunlar ayrı ayrı ele alınmıştır; burada odak noktası birden fazla bakış açısı eklemektir.
Aşağıdaki akış şeması tüm süreci göstermektedir ve örnek daha sonra bu süreci adım adım açıklamaktadır.
AngularJS'de ng-view Nasıl Uygulanır?
Bu örnek, kullanıcıya iki seçenek sunar: bir etkinlik görüntülemek ve bir etkinlik eklemek. Tıklama Etkinlik Ekle Bu, Etkinlik Ekle görünümünü gösterir ve aynı şey Etkinlik Görüntüle için de geçerlidir.
) 1 Adım Angular-route dosyasını bir komut dosyası referansı olarak ekleyin. Bu dosya, birden fazla rota ve görünüm kullanmak için gereklidir ve AngularJS sitesinden edinilebilir.
) 2 Adım href etiketlerini ve div etiketini ekleyin.
- “Yeni Etkinlik Ekle” ve “Etkinliği Görüntüle” bağlantılarını içeren href etiketleri ekleyin.
- İçeriği taşıyan bir div ekleyin.
ng-viewGörünüm bölgesini işaretlemek için kullanılan yönerge. Bağlantılardan herhangi birine tıklandığında ilgili görünüm oraya yerleştirilir.
) 3 Adım AngularJS script etiketine yönlendirme yapılandırmasını ekleyin.
- Kullanıcı tıkladığında YeniEtkinlik bağlantı, AngularJS yükleniyor
add_event.htmlİşaretleme kodunu görünüme ekler ve kullanır.AddEventControllerİş mantığı için. - Kullanıcı tıkladığında DisplayEvent bağlantı, yükleniyor
show_event.htmlve kullanırShowDisplayController. - MKS
otherwiseBu madde, kullanıcıya gösterilen varsayılan görünümü belirler; burada bu görünüm DisplayEvent'tir.
) 4 Adım Her iki fonksiyonun iş mantığını işlemek için denetleyiciler ekleyin. Her biri, ilgili görünüm gösterildiğinde görüntülenen, kendi kapsam nesnesine bir mesaj yerleştirir.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <script src="https://code.angularjs.org/1.8.3/angular-route.js"></script> </head> <body ng-app="sampleApp"> <h1>Guru99 Global Event</h1> <div class="container"> <ul> <li><a href="#!/NewEvent">Add New Event</a></li> <li><a href="#!/DisplayEvent">Display Event</a></li> </ul> <div ng-view></div> </div> <script> var app = angular.module('sampleApp', ["ngRoute"]); app.config(function($routeProvider) { $routeProvider .when("/NewEvent", { templateUrl: "add_event.html", controller: "AddEventController" }) .when("/DisplayEvent", { templateUrl: "show_event.html", controller: "ShowDisplayController" }) .otherwise({ redirectTo: '/DisplayEvent' }); }); app.controller("AddEventController", function($scope) { $scope.message = "This is to Add a new Event"; }); app.controller("ShowDisplayController", function($scope) { $scope.message = "This is to display an Event"; }); </script> </body> </html>
⚠️ Orijinal ilanda üç düzeltme yapılmıştır. Öncelikle, bağlantılar şöyle: #!NewEvent Rotalar, eğik çizgi olmaksızın şu şekilde tanımlanır: /NewEventBu nedenle hiçbir eşleşme bulunamadı. AngularJS 1.6'dan itibaren varsayılan karma öneki şudur: !Bu da doğru adresi oluşturur. #!/NewEvent — ünlem işaretinden sonra gelen eğik çizgi. İkincisi, ShowDisplayController Mesajı "Bu bir Etkinlik görüntülüyor" olarak ayarla, kelimeyi eksik bırak. için Çevredeki metnin alıntıladığı şey. Üçüncüsü, lib/bootstrap.js Hiçbir yere ulaşmayan ve asla kullanılmayan göreceli bir yoldan yüklendiği için kaldırıldı.
) 5 Adım Sayfaları oluşturun add_event.html hem de show_event.htmlHer biri bir başlık ve denetleyicisi tarafından eklenen mesajı görüntüleyen bir ifade içerir.
- add_event.html
<h2>Add New Event</h2> {{message}}
- show_event.html
<h2>Show Event</h2> {{message}}
Kod başarıyla yürütüldüğünde, tarayıcıda aşağıdaki çıktı görüntülenir.
Çıktı:
Sık Karşılaşılan ng-view Hataları ve Bunların Nasıl Düzeltileceği
ng-view ile ilgili hataların neredeyse tamamı, yönergenin kendisinden ziyade modül bağlantılarından, adres biçiminden veya sayfanın sunulma şeklinden kaynaklanır.
- Görüntüleme alanı boş kalır: the
ngRouteModül bağımlılık olarak listelenmemişti veyaangular-route.jsYüklenmedi. Her ikisi de gereklidir ve komut dosyası daha sonra gelmelidir.angular.min.js. - Bağlantılar adresi değiştiriyor ancak hiçbir şey görüntülenmiyor: `href` özniteliği rotayla eşleşmiyor. AngularJS 1.6'dan itibaren adresin şu şekilde olması gerekiyor:
#!/Route; 1.5 için yazılmış eski kod kullanıldı#/Route. - Şablonlar CORS hatası nedeniyle yüklenemiyor: Sayfa doğrudan diskten açıldı. Bu nedenle HTTP üzerinden sunun, çünkü...
templateUrlDosya protokolü blokları, bir AJAX isteğiyle alınır. - Yalnızca son görüntü görünür: Birden fazla öğe `ng-view` özelliğini içerir. AngularJS, sayfa başına tek bir görünüm bölgesini dikkate alır.
- İlk yüklemede hiçbir şey görünmüyor: yok hayır
otherwiseBu madde yapılandırılmıştır, bu nedenle boş bir adres hiçbir rotayla eşleşmez.










