如果条件在ui-router中匹配,如何更改url的部分?

时间:2015-12-11 11:51:22

标签: angularjs angularjs-scope angular-ui-router angularjs-rootscope

我的$ stateProvider中有两种状态,它们是经过身份验证的用户访问网址和公共访问网址。

我有一些公共访问的网址,我需要阻止这些网址访问经过身份验证的用户,并需要更改另一个网址。

示例假设,   http://localhost:3000/#/pjobadd/1 是公共访问网址,  如果经过身份验证的用户将访问此网址,我需要更改为 http://localhost:3000/#/jobadd/1

我正试图将解决方案视为吼叫

我在状态提供程序中添加了参数,如

.state('admin-panel.public.jobadd', {
    url: '/pjobadd/:jobID',
    templateUrl: 'app/public/jobadd.tmpl.html',
    controller: 'PublicJobaddController', 
    resolve: {
           jobAdd: ['Public', '$stateParams', function(Public,$stateParams) {                   
                        return Public.jobAdd($stateParams.jobID);
                    }]
     },
    data: {
        requireChange: 'pjobadd'
    } 
})

并在app.js中使用 requireChange ,如下所示

$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
  if (!Auth.isAuthenticated()){
            var requireChange = toState.data.requireChange;
            console.log(requireChange);
            switch(requireChange){
               case 'pjobadd':
                $state.go('admin-panel.default.jobadd');
               case 'psearch':
                $state.go('admin-panel.default.search');

  }

我需要附加url传递的参数和$ state.go()也没有重定向到提到的url。  我不认为这是有效的方式。

任何人都可以建议一个方法吗???

1 个答案:

答案 0 :(得分:0)

检查此网址...   How to pass parameters using ui-sref in ui-router to controller

你能在这里提供你的代码吗?并给我一些关于你的要求的更清晰的信息..