8

私がやろうとしているのは、外部サイトにリンクするパーシャルの html 内にアンカー タグを含めることだけです。この標準の html の場合、コードは単純に次のようになります。

<a href="http://www.google.com" target="_blank">google</a>

これと同じくらい単純ですが、ルートをインターセプトする角度を通過するための有効な解決策を見つけることができないようです (または、意図せずにアンカーをhttps://docs.angularjs.org/api/ng/directive/aディレクティブに置き換えますか?) .

私は SO と Web の残りの部分を精査し、同じドメイン内のリンク、SPA 内のルーティング、ページ内のルーティング (ala $anchorScroll) に対処するための無数のソリューションを見てきましたが、これらのどれも私の問題ではありません。

$sce の使用に関係があるのではないかと思いますが、私は Angular n00b であり、そのサービスを適切に使用する方法がよくわかりません。ビューコントローラーで次のことを試しました:

$scope.trustUrl = function(url) {
    return $sce.trustAsResourceUrl(url);
}

対応するもの:

<a ng-href="{{ trustUrl(item) }}">Click me!</a>

(ここで説明されているように: angularjs テンプレートでの外部 URL のバインド)

しかし、それはうまくいかなかったようです(レンダリングされたページで href="{{" だけになりました)。

次のようなプレーンなバニラ アンカー リンクを使用します。

<a href="http://www.google.com">google</a>

また、トリックを実行できませんでした(一部のオンラインでは、標準の href が angular: AngularJS - How can I do a redirect with a full page load? で完全なページのリロードを引き起こすとアドバイスされていましたが)。

target=_self" 属性も追加しようとしましたが、それも効果がないようです。

ここで説明されているように、カスタム ディレクティブを記述する必要がありますか?

Angular JS を使用して条件付きでリンクに target="_blank" を追加する

これはすべて、このような単純なアクションには複雑すぎるように思えます。また、自分の卑劣さに明らかな何かが欠けているように感じます.

解決策、アドバイス、参考文献、または方向性について事前に感謝します。

4

1 に答える 1

8

実際には、ページ内のすべてのアンカー リンクがイベント リスナーにバインドされ、オーバーライドされていることがわかりました。そのコードはページが機能する方法の基本的なものだったので、私はそれを台無しにしたくありませんでした. 代わりに、次のように ng-click を使用して新しい URL を呼び出すことでバイパスしました。

HTML:

<a class="navLinkHcp" href="{{hcpurl}}" title="Habitat Conservation Plan" target="_blank" ng-click="linkModelFunc(hcpurl)">Habitat Conservation Plan</a>

コントローラ:

$scope.hcpurl = 'http://eahcp.org/index.php/about_eahcp/covered_species';

$scope.linkModelFunc = function (url){
  console.log('link model function');
  $window.open(url);
}

そして出来上がり!行ってもいい。これがおそらく問題だったという点で私を手がかりにしてくれた KevinB に再び感謝します。

于 2014-06-30T00:14:08.353 に答える