LoginSignup
0
0

More than 5 years have passed since last update.

ng-hrefの遷移先を条件でふり分ける3つの方法

Posted at

方法1. ng-ifを使ってNULL と IS NOT NULL判定(ng-ifを2つ書く)

複雑怪奇なコードになりやすいので、微妙だが、実装が一番容易

<div ng-if="!test.view">1</div>
<div ng-if="!!test.view">2</div>

解説

if-elseを書きたいところだけれど、ng-ifではelseがないので、条件が真になるパターンと偽になるパターンをあえて書く。
二重否定(!!)で真の時の条件式、否定での偽の時のパターン

参照: javascript - how to check for null with a ng-if values in a view with angularjs? - Stack Overflow : http://stackoverflow.com/questions/23556092/how-to-check-for-null-with-a-ng-if-values-in-a-view-with-angularjs

方法2. ng-clickの中に処理を仕込んでng-hrefの参照先を切り替える。

多分、正攻法

html.
<a ng-href='{{link}}' ng-click='test(type);'> your link </a>
コンポーネント.
$scope.$watch('m', function(value){
    $scope.link = value ? 'link1': 'link2';
})

参照 javascript - AngularJs if statement in ng-href - Stack Overflow : http://stackoverflow.com/questions/29888624/angularjs-if-statement-in-ng-href

方法3. ng-href内で三項演算子を書く

方法1よりはマシ
複雑な条件判定式を書こうとすると複雑怪奇なコードを生む可能性が高い

<a ng-href='{{(element.url.indexOf("#")>-1) ? element.url : element.url + "client_id="}}{{credible.current_client_info.client_id}}'>{{element.title}}</a>

最後に一言言わせて欲しい

Qiitaに下書きかいて2年も放置していたので、ずいぶん古いネタになってしまった。
が、せっかく書いていたので公開して、残しておこうと思う。

Angular聞かなくなったね…

おしまい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0