如何从用户隐藏$ routeProvider的确切url调用

时间:2016-02-09 11:43:34

标签: angularjs

好吧,我已经实现了angularJS,我正在调用由$routeProvider处理的不同视图。问题在于例如:

$routeProvider.
  when('/prodDetails/:prodID', {
    templateUrl: 'templates/productDetails.html',
    controller: 'ProductController'
  }).

现在,如果我点击:

<a ng-href="#prodDetails/{{ prod.id }}">View Product</a>

浏览器网址会在网址标签中显示prod.id。如何操纵网址以隐藏其中的敏感信息。

2 个答案:

答案 0 :(得分:1)

使用Angular UI Router。它会解决你的问题而不做任何事情。然后你可以使用angular-ui-router给出的params对象传递参数。

答案 1 :(得分:0)

您可以使用angular ui router

您可以通过以下方式实现这一目标:

$stateProvider.
  state('productDetail', {
    url: '/prodDetails',
    templateUrl: 'templates/productDetails.html',
    controller: 'ProductController',
    params: {
      productId: 'defaultId'
    }
  })

在html中:

<a ui-sref="productDetail({productId: prod.id})">View Product</a>

您可以使用服务$ stateParams从控制器访问productId。

修改

假设您有encodeIddecodeId个函数:

<a ui-sref="productDetail({productId: encodeId(prod.id)})">View Product</a>

并在控制器中:

app.controller(function($stateParams) {
  var id = decodeId($stateParams.productId);
});