2012-06-29 13 views
7

Her iki denetleyicinin ve şablonun erişebildiği bir isLoggedIn() işlevine ihtiyacım var (şablonlar ng-show = "isLoggedIn()" gibi bir şey yapmak için buna ihtiyaç duyar). Bunu yapmanın en iyi yolu nedir?Herhangi bir denetleyici veya şablonda erişilebilen AngularJS'de isLoggedIn işlevi oluşturmanın en iyi yolu?

Yanıt bir hizmetse, bir şablondan bir hizmete erişmek mümkün mü, yoksa denetleyicilerimin her birinin şablonun görmesi için bir sarmalayıcı işlevi oluşturması gerekiyor mu ($ kapsamı dahilinde)?

cevap

5

Vücudumun etiketinde genellikle bir 'MainCtrl' var ve içine global şeyler koydum.

<body ng-controller="MainCtrl"> 
    ... 
</body> 

function MainCtrl($scope, authService) { 
    $scope.isLoggedIn = function() { 
    return authService.isLoggedIn(); 
    } 
} 

Daha sonra diğer her alan isLoggedIn işlevini devralır.

Ayrıca isLoggedIn öğesini $ rootScope'a da yerleştirebilirsiniz, ancak bu yolu seviyorum.

+0

Ah düzgün, denetleyicilerin bunun gibi alt denetleyicilere sahip olabileceğini fark etmemiştim. Bu iyi çalışıyor. Başka bir en iyi uygulama ya da başka bir şeyle birlikte gelmesi durumunda, bir veya iki gün için soruyu açık bırakacağım ve aksi takdirde kabul edildi olarak işaretleyeceğim. –

+0

Aynı burada. Alt kontrolörler hakkında bir şey bilmiyordum. Teşekkürler bu, anlamaya çalıştığım birkaç şeyi temizlememe yardımcı oldu. – Jeff

İlgili konular