$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
ません。これは、このコードがコントローラーまたはディレクティブのどちらにあるかに関係ありません。