15

Eğitici AngularUI projesinde çalışıyorum. Tüm eyaletleri, iç içe durumları ve soyut durumları okurum. Sorun şu ki, soyut durumu neden ve ne zaman kullanmalıyım?Özet devletin amacı nedir?

cevap

19

Soyut durum, yazdığınız devletin doğrudan erişilemediği anlamına gelir . Soyut devletlerin çocuklarının takmaları için hala kendi ihtiyaçları vardır.

Çocuğunun durumunu yüklediğimizde çağrılır. Sayfanızın bazı başlangıç ​​kalıplarını tanımlamak için soyut durumu kullanabilirsiniz. Örneğin, kullanıcı profili & sosyal sayfasını göstermek istediğiniz herhangi bir sosyal medya sitesi örneğini alabileceğinizi varsayalım. Bunun için, url: "" & sayfanızın temel düzenini içeren bir abstract durumunuz olabilir. Görünümler olarak header, content & footer gibi. & & & & Soyut görünüm tarafından doldurulacak, daha sonra çocuk hangi içeriğin görüntülendiğine bağlı olarak içeriği tanımlayacaktır./profileuserProfile.html & /social bir kullanıcının sosyal sayfasını gösterecektir social.html. abstract ait

Yapılandırma

app.config(function($stateProvider){ 
    $stateProvider.state("app": 
    { 
    url: "", //you can have the default url here..that will shown before child state url 
    abstract: true, 
    views: { 
     '': { 
      templateUrl: 'layout.html', 
      controller: 'mainCtrl' 
     }, 
     'header': { 
      templateUrl: 'header.html' 
     }, 
     'footer': { 
      templateUrl: 'footer.html' 
     } 
    }, 
    resolve: { 
     getUserAuthData: function(userService){ 
      return userService.getUserData(); 
     } 
    } 

    }) 
    .state("app.profile": { 
     '[email protected]': { 
      templateUrl: 'profile.html', 
      controller: 'profileController' 
     } 
    }) 
    .state("app.social": { 
     '[email protected]': { 
      templateUrl: 'social.html', 
      controller: 'socialController' 
     } 
    }) 
}) 

Diğer ana özellik, üzerinde ortak kararlılığını sahip çocuk devletler veya bir olay dinleyicisi tarafından kullanılmak üzere veri yoluyla kalıtsal özel veri sağlayabilir olduğunu. state

den çıkarken Ayrıca state & yüklemeden önce emin şeyler yapmak için üzerine OnEnter & OnExit olabilir
5

\ Geçiş yapılabilecek bir duruma sahip olmak istemiyorsanız, bunu soyut bir duruma getirebilirsiniz. Eğer kullanıcı sadece \A gitmek istemiyorsanız Örnek

\A 
\A.B 
\A.B.C 

, bunu abstract yapmalıdır.

0

Özet devletler

biz birçok eyalette mevcut bazı ortak bilgilere ihtiyaç duyarlar durumlar vardır

. Bu amaçla UI-Router soyut durumları belirleme olanağı sağlar. Soyut durumlar, çocuk devletlere sahip olabilirler, ancak ne geçişleri ne de kendilerine geçemezler. Çocuk devletlerinden biri aktif hale getirildiğinde soyut bir devlet örtülü olarak devreye girer. Bu, aşağıdaki durumlarda yararlıdır: , tüm çocuk durumu URL'lerine bir url eklememiz gerektiğinde , kendi kullanıcı arabirimine sahip bir şablon eklememiz gerekir; bu durumda, çocuk durumları 'u doldurarak, bağımlı bağımlılıkları (çözme yoluyla) sağlamanız gerekir. çocuk halleri tarafından kullanılmak üzere sipariş, çocuk durumları veya olaylar tarafından kullanılmak üzere miras alınan özel durum verilerini vermemiz gerekir Soyut durumları, durum yapılandırma nesnesinde doğru olarak ayarlanan soyut anahtarı belirten tanımlanır.

$stateProvider 

.state('home', { 

    abstract: true, 

    templateURL: 'home.html' 

}) 
3

Temel olarak, soyut durumlar, farklı durumlardan ortak durumları bir üst soyut duruma geçirmenize yardımcı olur.

Tipik bir örnek, kullanıcı adı, yerelleştirme ayarları, meta verilerinin yüklenmesini işleyen bir durumdur. Kullanıcının yalnızca bunu yükleyecek bir duruma yönlendirmesini istemezsiniz. Sen

/session soyut olurdu ama /session/main, /session/detail olmaz her eyalette yönlendirilir zaman, her zaman yüklenecek istiyorum. Bağımlılıklar aracılığıyla, oturum verileri hem main hem de detail durumlarına giderken yüklenir, ancak kullanıcının session durumuna gitmesini istemezsiniz.