angularjs – Angular UI路由器 – 强制URL参数?
发布时间:2020-12-17 17:13:58 所属栏目:安全 来源:网络整理
导读:我有几个状态使用相同的控制器.其中一些不需要URL参数,而有些则需要.如果未提供URL参数,如何避免可以访问状态? 例: 我有2个观点或状态,列表和单个.它们共享同一个控制器.我的路线映射如下: state: app.listurl: /listcontroller: appCtrlstate: app.singl
我有几个状态使用相同的控制器.其中一些不需要URL参数,而有些则需要.如果未提供URL参数,如何避免可以访问状态?
例: 我有2个观点或状态,列表和单个.它们共享同一个控制器.我的路线映射如下: state: app.list url: /list controller: appCtrl state: app.single url: /single/:id controller: appCtrl 现在,我希望只有在指定了id时才能访问single,否则只需重定向到其他页面.怎么可能使用同一个控制器? 解决方法
方法1
你可以使用$urlRouterProvider和when()进行重定向. app.config(function($urlRouterProvider){ // when there is an single route without param,redirect to /list $urlRouterProvider.when('/single/:id',['$match','$state',function($match,$state) { if($match.id === ""){ $state.transitionTo("app.list"); } } ]); }); 工作演示:http://plnkr.co/edit/sEoUGGCEge0XbKp3nQnc?p=preview 方法2 您可以检查控制器端的参数并将其重定向到特定页面 myApp.controller('MainCtrl',function($state,$stateParams) { if($state.current.name == 'app.single' && $stateParams.id === ""){ $state.transitionTo("app.list"); } }); 工作演示:http://plnkr.co/edit/QNF1RHy4Prde4CRhNLFa?p=preview 注意:在上面的演示中,当您的当前状态不应该是app.single时,重定向会起作用.如果你处于app.single状态并尝试没有param,则状态不会改变.所以转到主页面,然后单击没有单个状态参数的链接.它将重定向到列表状态. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读