ナビゲーションを定義しています。ルートがアクセスできない、または権限が存在する場合は、ボタンを表示します。私はパーミッションビットを行って、それはうまく動作しますが、今は設定に応じてページを除外し始めています。理想的には、パスを取り、存在するかどうか、そしてアクセス権があるかどうかをルータに照会するような指示文(route-depend
など)が必要です。角度ルート:ルートが存在するかどうかのテスト
は、だから私は、次があります。
<li data-route-depend="/newpage">
<a href="#" data-ng-click="setActiveTab('newpage')">NEW PAGE</a>
</li>
:
app.config([ "$routeProvider", function($routeProvider) {
$routeProvider
.when("/404", {
templateUrl : "/pages/404.php"
}).when("/noauth", {
templateUrl : "/pages/noauth.php"
}).when("/home", {
templateUrl : "/pages/homepage.php"
}).when("/about", {
templateUrl : "/pages/about.php",
permission : "logged-in"
}).otherwise({
redirectTo : "/404"
});
} ]);
私は私のナビゲーションリンクが設定されている(ボタンと同じ)私のような何かをしたい
<li data-has-permission="logged-in" >
<a href="#" data-ng-click="setActiveTab('about')">ABOUT</a>
</li>
これは私の例ではdata-route-depend
が失敗することを意味します(そして要素を私のhas-permission
doe s)ルートが定義されていないので(他の方法で404ページにリダイレクトする以外)
私は$routeProvider
のドキュメントを見てきましたが、それほど多くはないようです。それは$route
の例を指していますが、やはり私の後ろのもののようには見えません。
app.directive('routeDepend', [ "$route", function($route) {
return {
link : function(scope, element, attrs) {
if (!(typeof attrs.routeDepend == "string")) {
throw 'route-depend value must be a string'
}
var value = attrs.routeDepend.trim();
function toggleVisibilityBasedOnRoute() {
logger($route.routes); // Shows as object of objects
for (var route in $route.routes) {
if ($route.routes.hasOwnProperty(route)) {
logger(typeof route); // shows as a string??
logger(route);
logger("Checking '"+attrs.routeDepend+"' against '"+route.originalPath+"'"); // undefined originalPath
// check route.permission
}
}
}
toggleVisibilityBasedOnRoute();
scope.$on('permissionsChanged', toggleVisibilityBasedOnRoute);
}
};
} ]);
をしかし、あなたは、コメントから見ることができるように私は期待していて、物事が解決されていません。
私は一緒にこの石畳います。
私は何が間違っているのですか、私はそれが私が望むことをどうすればいいのですか?
私はこれがこの質問に対する答えだとは思わない。彼はどのように状態に基づいて表示/非表示にどのようにルートが存在するかどうかをチェックする方法を尋ねる。 – sielakos
私はある時点でルートリストを反復する必要があります:) –
私は知っていますが、あなたは "私は、ルートがアクセス可能であるか許可が存在すればボタンが存在します。 設定済みです。経路を照会するのではなく、既存の設定部分を使ってリンクを表示/非表示にしてください –