【问题标题】:Angular UI Router remove slash in ? parameterAngular UI 路由器删除斜线?范围
【发布时间】:2017-02-17 18:04:11
【问题描述】:

目前我有这个问题:Angular ui route stateparam in substate

在状态的 url 中尝试使用路由参数和其他方法(如 {transactionid}[transactionid])后,我注意到在 ? 之前添加了 /的参数。所以,网址看起来像:

website.com/page/?transactionid=someid

但是,我认为它必须是

website.com/page?transactionid=someid

我们目前使用此代码删除任何网址的尾部斜杠

$urlMatcherFactoryProvider.strictMode(false);

$urlRouterProvider.rule(function($injector, $location) {
    var path = $location.path();
    var hasTrailingSlash = path[path.length-1] === '/';

    if(hasTrailingSlash) {
        //if last charcter is a slash, return the same url without the slash  
        var newPath = path.substr(0, path.length - 1); 
        return newPath; 
    }
});

但是,如何删除“问号”前的“/”?

“付款成功”的路线(请参阅链接中的问题)目前如下所示:

.state('shop.payment-success', {
    url: '/payment-success{transactionid}',
    templateUrl: '/views/payment-success.html',
    params: {
        transactionid: {
            value: null,
            squash: true
        }
    },
    resolve: {
        transactionid: ['$stateParams', function($stateParams){
            console.log($stateParams);
            return $stateParams.transactionid
        }]
    }

【问题讨论】:

  • 对不起,但你为什么不改用一些东西 lke: .state('shop.payment-success', { url: '/payment-success/:transactionid', templateUrl: '/views/ payment-success.html', params: { transactionid: { value: null, squash: true } }, resolve: { transactionid: ['$stateParams', function($stateParams){ console.log($stateParams); return $ stateParams.transactionid }] }
  • 因为参数 ?transactionid 是从支付网关返回的,我无法更改它

标签: angularjs angular-ui-router


【解决方案1】:

我认为最好使用标准路由(您有更多选择,而且更容易......并且不必删除任何内容)......类似于:

.state('shop.payment-success', {
    url: '/payment-success/:value/:squash', //<-- HERE YOU SET THE PARAM .. YOU CAN HAVE MORE THAN ONE
    templateUrl: '/views/payment-success.html',

    resolve: {
        transactionid: ['$stateParams', function($stateParams){
            console.log($stateParams);
            return {value:$stateParams.value,squash:stateParams.squash}
        }]
    }

【讨论】:

  • 嗯,改一下,但是console.log里解析,还是返回'transactionid: null'
  • 如果 url 像 website.com/payment-success/value/squash 但 url 像 /payment-success?transactionid=someid 那样有效
猜你喜欢
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
相关资源
最近更新 更多