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
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./profile
userProfile.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
state
& yüklemeden önce emin şeyler yapmak için üzerine
OnEnter
&
OnExit
olabilir
\ 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.
Ö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'
})
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.