2012-07-19 16 views
11

Bu, aşağıdaki soru şu sorudur: AngularJS - How to use $routeParams in generating the templateUrl?. Bu sorunun doğru bağlamı için koduma bakın.AngularJS - URL'ye göre güncelleme modeli

Tüm gezinme bölümü harika çalışıyor, ancak şimdi gezinirken,ve secondaryNav tabanlı $scope'daki bazı özellikleri güncellemek istiyorum. $watch ile bir şeyler yapabileceğimi düşündüm ama işe yaramayacak bir şey göremiyorum. Muhtemelen bu navs alıp her şeyi güncellemek ve açmak gezinmek ve sadece tüm bağlantı etiketlerine bir ng-click eklersiniz benim denetleyicisi bazı yöntem yaratabilecek

$scope.$watch($location.path(), function() {...}); //result in js error 
$scope.$watch($location, function() {...}); //function runs once on page load, but not after that 
$scope.$watch($window.location, function() {...}); //function runs once on page load, but not after that 
$scope.$watch(window.location, function() {...}); //function runs once on page load, but not after that 
$scope.$watch(window.location.href, function() {...}); //results in js error 

: İşte çalıştı birkaç şey vardır. Ancak, AngularJS hakkında gerçekten sevdim bir şey hrefs (ör. <a href="#/priNav/secNav">Foo</a>) için gerçek URL görünümlü değerleri kullanmak oldu. Modelimi, denetleyicideki bazı yöntemlerden geçmeden rota değiştirirken değişen URL'ye göre güncellemek mümkün değil mi? Umarım istediğimi anlamlandırır.

cevap

33
$scope.$watch(function() { 
    return $location.path(); 
}, function(){ 
    ... 
}); 

Bir işlev veya

+0

Ahh ... Ben bir işlevi izlerken unuttu kapsam içine değerlendirilebilir bir dize geçmelidir. Çalıştığım her şey bir ipteydi. $ scope. $ watch ($ location.path, function() {}); 'çalışmıyor, ancak $ kapsamı. $ watch (function() {return $ location.path()}, işlev() { ...}); 'yapar. Teşekkür ederim! – dnc253

+2

Teşekkürler! [$ Location.search] için bile çalışır (http://sharepointkunskap.wordpress.com/2012/11/22/angularjs-sync-location-search-with-an-input-value/) –