Подтвердить что ты не робот

AngularJS - обновить модель на основе URL-адреса

Это в основном следующий вопрос: AngularJS - Как использовать $routeParams при создании шаблонаUrl?. См. Мой код для правильного контекста этого вопроса.

Вся часть навигации отлично работает, но теперь, когда я перемещаюсь, я хочу обновить некоторые свойства в моем $scope на основе primaryNav и secondaryNav. Я думал, что могу что-то сделать с $watch, но я не могу заставить ничего работать. Вот несколько вещей, которые я пробовал:

$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

Возможно, я мог бы создать какой-то метод в моем контроллере, который возьмет эти навигаторы и обновит все, а затем отключится и просто добавит ng-click ко всем привязным тегам. Тем не менее, мне очень понравилось в AngularJS использовать реальные URL-ориентированные значения для hrefs (например, <a href="#/priNav/secNav">Foo</a>). Невозможно ли обновить мою модель на основе изменения URL-адреса при маршрутизации, не пройдя какой-либо метод на контроллере? Надеюсь, это имеет смысл, о чем я прошу.

4b9b3361

Ответ 1

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

вам следует передать функцию или строку, которая может быть оценена внутри области