7

$location.pathAngularJS ディレクティブ内から更新しようとしています。ブラウザ ウィンドウに表示される 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ません。これは、このコードがコントローラーまたはディレクティブのどちらにあるかに関係ありません。

4

4 に答える 4

0

scope.$applyはうまくいきました。まず試してみてください。

于 2015-04-26T16:19:22.127 に答える
0

問題は、私が提供していたように、Angular が$routeProviderパスをクエリ文字列と一致させないため、元のページを再度一致させてリロードしていたことです。ここで同様のソリューション。ちょっと変わった症状ですけどね。

于 2013-06-18T22:32:47.427 に答える
0

$location.pathはサポートしていませんparam

$location.url代わりに使用してください。

于 2015-11-07T07:45:39.450 に答える