2012-09-01 11 views
6

Geçerli görünüme bağlı olarak sayfa üstbilgisini değiştirmeye çalışıyorum. Üstbilgi ngView dışında. Bu mümkün mü, yoksa başlığın görüş alanına girmesine mi ihtiyacım var?AngularJS içinde, geçerli görünüm ngSwitch ngView dışında kullanılabilir kullanabilir

Benim kod şuna benzer: Bu başlık ve içerik farklı denetleyicileri olacak şekilde

<div id="header"> 
    <div ng-switch on="pagename"> 
     <div ng-switch-when="home">Welcome!</div> 
     <div ng-switch-when="product-list">Our products</div> 
     <div ng-switch-when="contact">Contact us</div> 
    </div> 
    (a lot of unrelated code goes here)  
</div> 

<div id="content> 
    <div ng-view></div> 
</div> 

cevap

1

görünüyor. Kontrolörler arasındaki iletişim için en iyi yol servistir. Başka bir yol - olaylar. See Vojta answer.

9

$location hizmetini enjekte edebilir ve $location.path()'u kontrol edebilirsiniz. http://docs.angularjs.org/api/ng.$location

JS:

function Ctrl($scope, $location) { 
    $scope.pagename = function() { return $location.path(); }; 
}; 

HTML: bunları tanımlamadan zaman

<div id="header"> 
    <div ng-switch on="pagename()"> 
    <div ng-switch-when="/home">Welcome!</div> 
    <div ng-switch-when="/product-list">Our products</div> 
    <div ng-switch-when="/contact">Contact us</div> 
    </div> 
</div> 
10

her rotada bir ad verin. Ardından denetleyiciye $ rotası enjekte edin, ardından denetleyicinin bunu geçerli kapsamda yayınlamasını sağlayın. Daha sonra ng anahtarını $ route.current.name adresine bağlayabilirsiniz.

1

Bunu çözmek için güzel bir yaklaşım, denetleyicinize $ rotası enjekte etmek ve sonra geçerli rota adını almak için kullanmak olabilir.

app.controller('YourController', function($scope, $route){ 
    $scope.pagename = $route.current.$$route.name; 
}); 

Ve aşağıdaki gibi yolları isim vardır: Bir rota yüklediğinizde

app.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider. 
     when('/product-list', { 
     templateUrl: 'views/product-list.html', 
     controller: 'ProductsController', 
     name: 'product-list' 
     }). 
     when('/home', { 
     templateUrl: 'views/home.html', 
     controller: 'HomeController', 
     name: 'home' 
     }). 
     otherwise({ 
     redirectTo: '/' 
     }); 
    }]); 

Yani, kontrolör Geçerli rota adını okuyabilir ve safyaadı değişkeni görünüme geçecek . Ardından görünüm onu ​​alır ve ihtiyacınız olan doğru görüntüyü gösterir.

Yardım edin yardımcı olur :)

İlgili konular