私は、ユーザーの役割をチェックする角度jsファクトリメソッドにpermission関数を書いています。ユーザーオブジェクトにそのような役割がある場合、結果は真でなければなりません。そうでなければ偽を返します。角度jsの別の配列に配列の値が存在するかどうかを確認する方法はありますか?
administrator:true
company_admin:true
registered:true
manager:true
contact:"987654321" email:"[email protected]" name:"Anand"
とアプリモデル工場での私の許可機能は次のとおりです:私のユーザーオブジェクトがある 1.を複数がある場合:
$appModel.checkPermission:function($role, $requireAll) {
var data = $rootScope.authUser;
if (angular.isArray($role)) {
angular.forEach($role, function (value, key) {
var hasRole = $appModel.checkPermission(value); //Recursive Function
if (hasRole && !$requireAll) {
return true;
} else if (!hasRole && $requireAll) {
return false;
}
});
return $requireAll;
} else {
if (data.hasOwnProperty($role) && data[$role])
return true;
}
return false;
}
私がチェックしています以下のような場合があります。その配列内の 'required all'条件でロールを実行し、次にユーザーオブジェクトに存在する複数のロールをチェックし、trueを返します。そうでない場合はfalseを返します。その配列内に複数の役割がある場合、それらの中に複数の役割をチェック
$result= $appModel.checkPermission([registered, company_admin], true);
2.は、ユーザーオブジェクトに存在し、任意の役割が一致した場合は、その後、そうでない場合はfalseを返すtrueを返します。
$result= $appModel.checkPermission([administrator, company_admin,manager,agent], false);
3.その配列内の単一の役割がある場合は、その役割は、ユーザーオブジェクトに存在するチェックし、その役割が一致した場合は、その後、そうでない場合はfalseを返すtrueを返します。
$result= $appModel.checkPermission(register, false);
上記のコードはチェック単一の役割のために罰金を実行しているが、「すべての必要な」をかいない状態「のすべてを必要と」でチェックし、複数の役割の場合には、それが正常に動作し、falseを返しません。
また、あなたの最後の行 '場合(data.hasOwnProperty(役割)&&データ[役割])は'失敗します。私は条件付きチェックを返すことでこれを解決しました – user2340824
ありがとうございました!それは非常にうまくいった。私は最後の二日以来それに対処するために非常に忙しかった。あなたは私のために多くの時間を節約しました。ありがとう、トン。 @ user2340824 – Hemant
お手伝いして本当にうれしくてうれしいです! – user2340824