2017-11-08 13 views
0

私はアクセス権を持っているかどうかを識別するapiを持っています。私がしたいことは、私が特定の許可を持っていない場合にボタンを表示/非表示にすることです。私はアクセス権がない場合にボタンを表示/非表示にする

これは私がAPIを消費していたコードです:

function users(){ 
     $http.get('/api/users') 
     .then(function(data){ 
      $scope.thisUser = data.data.Response; 
      //console.log($scope.thisUser); 
     }); 
    } 

それはこのようなものの応答:どのように私はNG-ショー/ NG-非表示に渡すことができ

0:{RoleName: "basic user", Select: true} 
1:{RoleName: "advance user", Select: false} 

<button class="btn btn-info">Next Step</button> 
:例ごとに、私は advance user許可 (if Select: false)を持っていない、場合、次のボタンの可視性を許可または拒否するためのparams

私はapiを消費しているので、ユーザの許可を特定するので、私はその許可の検索を起動しません。

私はAngularJsとJavascriptを使用しています。

Thanx事前に。

+0

は、なぜあなたはちょうど行いません。 <ボタンNG-ショー= "thisUser.Select" クラス= "BTN BTN-INFO">次のステップ は、この動作しませんか? – WilsonPena

+0

(必須コメント)もちろん、フロントエンドコードや要素の可視性に依存してシステムに認証を強制してはいけません。*サーバー*で、何をしようとしているのかを確認してください。ボタンを隠すことだけに頼るのではない。 –

答えて

1

find私

isUserAdvanced() { 
    return $scope.thisUser.some(role => role.Select) 
} 
2

あなたはlodashと呼ばれるライブラリを使用することができるならば、あなたは

<button ng-show="isUserAdvanced()" class="btn btn-info">Next Step</button> 

を行うことができる必要があり、次のように、新しいメソッドを追加します。

isUserAdvanced() { 
     return _.findIndexOf($scope.thisUser, {RoleName: "advanced user", Select: true}) != -1; 
    } 

@skyboyerが述べたように、おそらくこれはlodashの依存関係がなければこれに適しています:

isUserAdvanced() { 
      return $scope.thisUser.some(role => role.Select && role.RoleName == "advanced user"); 
     } 
+1

ネイティブ関数を使用する方が良いです: '$ scope.thisUser.some(role => role.Select)' – skyboyer

+0

@skyboyerもちろん、私の答えにそれを追加してもいいですか? – holyfire

+0

あなた自身で問題はありません。その間にSajeetharanは既にそれを既にしていた:D – skyboyer

関連する問題