Я пытаюсь обновить $location.path
в рамках директивы AngularJS. Он не работает, как я ожидаю, это обновление URL-адреса, отображаемого в окне браузера, и отображение другого содержимого на моей странице. Мои функции определенно получаются с правильными значениями, как показано на консоли. Я думаю, что $location.path
может иметь какой-то эффект, потому что, когда я нажимаю на ссылку, вызываются некоторые дополнительные функции, которые будут вызываться на новой странице, только новая страница никогда не отображается. Когда я использую $location.path
в контроллере, он работает так, как ожидалось, но не в моей директиве.
Вот HTML для моей директивы:
<div detail-link="/comments?post={{post.postId}}" ng-click="clickDetailLink()"></div>
Вот определение этой директивы (в CoffeeScript):
directives.directive 'detailLink', ['$location', ($location) ->
return (scope, element, attrs) ->
scope.clickDetailLink = ->
console.log "loading " + scope.detailLinkHref
$location.path scope.detailLinkHref
attrs.$observe 'detailLink', (value) ->
console.log "set detail link to " + value
scope.detailLinkHref = value
]
У меня есть ключ, что здесь происходит ... мой $routeProvider
установлен для обработки /comments
, но здесь я пытаюсь добавить строку запроса к маршруту. Если я использую обычный <a href="#/comments?post={{post.postId}}">
, это прекрасно работает, но каким-то образом настройка того же маршрута через $location.path
не работает. Это независимо от того, находится ли этот код в контроллере или директиве.
Хм, да. Это решает эту проблему, но она по-прежнему не решает реальной проблемы. Теперь у меня уже есть $ $. Обертка его в '$ timeout' исправляет бит« уже выполняется », но по-прежнему не обновляет путь. Я отредактирую свой вопрос .. спасибо! – jab
Вы также можете посмотреть в $ log. –
Вы должны иметь возможность сделать это все в своем контроллере. –