javascript - 隐藏 URL 中的参数值 (guid)

标签 javascript angularjs angular-routing

在我的路线

.when('/user:user_guid',{
        templateUrl : 'users/profile.html',
        controller : 'userController'
    })

在我的 index.html 中的 ng-repeat 我有

<a href="#/user/:{{user.user_guid}}">view profile</a>

它可以工作,但在我的 URL 中我看到 guid 已被公开。有办法隐藏吗?

最佳答案

使用ng-click

<a ng-click="go_url(user)">view profile</a>

然后在某个 Controller 中

//it has many possible solutions, this is one of them
//according to your config, you're using angular route provider
$scope.go_url = function(_user){
    //be sure to inject $location service
    $location.path('/user/' + _user.user_guid);
}

如果您不想在浏览器中公开 URL,请使用可以在内部保存 guid 变量的服务,并在用户导航到 /user 时获取它

<小时/>

这是演示

angular.module('demo', ['ngRoute']);
  angular.module('demo').config(function($routeProvider){
    $routeProvider
    .when('/welcome', {
      templateUrl: 'welcome_page'
    })
    .when('/user', {
      templateUrl: 'hello_page'
    })
    .otherwise({redirectTo: '/welcome'});
  });
  angular.module('demo').service('SecretServ', function(){
    this.secret_guid = '';
  });
  angular.module('demo').controller('Controller1', function($scope, $location, SecretServ){
    $scope.user = {
      guid: '123345567234'
    };
    $scope.go = function(){
      SecretServ.secret_guid = $scope.user.guid;
      $location.path('/user');
    };
  });
  angular.module('demo').controller('Controller2', function($scope, SecretServ, $location){
    $scope.guid = SecretServ.secret_guid;
    $scope.exit = function(){
      $location.path('/welcome');
    }
  });
<script src="https://code.angularjs.org/1.4.4/angular.js"></script>

<script src="https://code.angularjs.org/1.4.4/angular-route.js"></script>

<div ng-app="demo">
  My app
  <div ng-view></div>
<script id="welcome_page" type="text/ng-template">
<div ng-controller="Controller1">
Welcome<br>
To go to private page, click <button ng-click="go()">me</button>
</div>  

</script>
<script id="hello_page" type="text/ng-template">
<div ng-controller="Controller2">
Hello {{guid}}, <button ng-click="exit()">exit</button>
</div>    
</script>
</div>

关于javascript - 隐藏 URL 中的参数值 (guid),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32293057/

相关文章:

javascript - Alfresco:编写工作流程脚本以复制同一文件夹中的文档并使用新文档继续工作流程

javascript - JavaScript 中 "decorator function"和 "decorator design pattern"有什么区别?

javascript - 如何在 Eclipse 中测试和创建 angularjs 的测试用例?

javascript - 使用 Express、Node 和 Rest 从 AngularJS 发布数据

Angular 2+ 静态 html 路径

javascript - Angular 5 - 无法分配类属性

javascript - angularjs 的 ng 映射中的距离

angularjs - 在 ng-repeat 中迭代对象或数组

python - 找不到 HTML 模板

angular - Angular 6+ 中基于角色的重定向