2014-04-19 141 views
1

我想知道如果有可能使与angularjs一些隐藏的路线,例如,我有一个类别和子类别,在我的应用我有我们可以用angularjs制作隐藏的路线吗?

.when('/category/new' ,{ 
    controller : 'newCategoryCtrl', 
    templateUrl : '/category.html' 
    }) 
.when('/category/:id/sub/new' , 
     { controller : 'newSubCategoryCtrl', 
    templateUrl : '/subCategory.html' 
    }).... 

在我的情况下,如果要添加新的子类别您必须按类别搜索,然后您可以访问子类别视图。但配置的问题,你可以访问这个网址,如果你知道它没有任何限制

+1

为什么你限制用户'not'进入子类别?如果他知道类别ID,他可以直接通过url输入。 –

+0

是的,这是一种情况,但他仍然有可能犯了一个错误,但有其他情况下我们想限制访问某些视图,例如我使用了ionization Cms [link](http://ionizecms.com/en/support/userguide/quickstart/put-one-element-online-offline),我们可以创建一些离线视图。所以我认为它是相同的功能 – ziedTn

+1

你必须限制服务器端的访问。否则,用户将总是**能够访问该视图。 – zeroflagL

回答

0

你可以做的是有一个路由,将处理正确的子路线之前不正确的子路线。您实际上可以利用相同的子路线控制器,评估$routeParams并反弹回您喜欢的任何路线。

.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider 
     .when('/page/new', { templateUrl: 'page.html', controller: 'pageCtrl'}) 
     .when('/page/:id/:substuff', {templateUrl: 'subPage.html', controller: 'subPageCtrl'}) 
     .when('/page/:id/sub/new', {templateUrl: 'subPage.html', controller: 'subPageCtrl'}) 
     .otherwise({ redirectTo: '/page/new' }); 
}]); 

Here's a plunk

+0

是的,但这不是我们的情况,我希望没有人能够直接从浏览器的导航栏访问路由页面/:id/sub/new。我认为唯一可能的解决方案是,在解析视图时,我们调用服务器端来验证页面id,就像他提到的那样。zeroflagL。谢谢您的回答。 – ziedTn

+0

这种情况下唯一的选择是1)不指定默认路由在'$ routeProvider'上,2)处理受限制的路由并重定向到一些期望的路由,3)当被限制的路由被访问时允许重定向到默认路由。 –

相关问题