2012-07-19 17 views
11

Jest to zasadniczo kolejne pytanie na to pytanie: AngularJS - How to use $routeParams in generating the templateUrl?. Zobacz mój kod tam dla właściwego kontekstu tego pytania.AngularJS - Zaktualizuj model oparty na adresie URL

Cała część nawigacja działa świetnie, ale teraz, kiedy nawigacja, chcę zaktualizować niektóre właściwości w moim $scope oparciu o primaryNav i secondaryNav. Pomyślałem, że mogę coś zrobić z $watch, ale nie mogę uzyskać niczego do pracy. Oto kilka rzeczy, próbowałem:

$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 

prawdopodobnie mógłbym stworzyć jakiś sposób w moim kontrolera, która weźmie te navs i aktualizacji wszystko i poruszania się i po prostu dodać ng-click wszystkich tagów kotwicy. Jedną z rzeczy, które bardzo podobały mi się w AngularJS, to użycie prawdziwych adresów URL dla hrefów (np. <a href="#/priNav/secNav">Foo</a>). Czy nie jest możliwa aktualizacja mojego modelu w oparciu o zmieniający się adres URL, gdy prowadzę trasę bez przechodzenia przez jakąś metodę na kontrolerze? Mam nadzieję, że to ma sens, o co proszę.

Odpowiedz

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

należy przekazać funkcję lub ciąg znaków, który może być oceniana w środku zakresu

+0

Ahh ... zapomniałem o oglądanie funkcję. Wszystko, co próbowałem, było na strunie. '$ scope. $ watch ($ location.path, function() {});' nie działa, ale '$ scope. $ watch (function() {return $ location.path()}, function() { ...}); 'robi. Dziękuję Ci! – dnc253

+2

Dzięki! Działa nawet dla [$ location.search] (http://sharepointkunskap.wordpress.com/2012/11/22/angularjs-sync-location-search-with-an-input-value/) –

Powiązane problemy