2017-02-17 2 views
0

В настоящее время у меня есть этот вопрос: Angular ui route stateparam in substateУгловой UI-маршрутизатор удалить косую черту? Параметр

После некоторых попыток с маршрутом Params и другими методами в URL государства как {transactionid} и [transactionid] я заметил, что есть/добавить до? параметра. Таким образом, URL выглядеть Liks:

website.com/page/?transactionid=someid 

, но, я думаю, что это должно быть

website.com/page?transactionid=someid 

В настоящее время мы удаляем слэш любой URL, используя этот код

$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 
     }] 
    } 
+1

извините, но почему бы вам не использовать вместо что-то LKE: .state ('shop.payment-успех', { URL: «/ payment- success /: transactionid ', templateUrl:' /views/payment-success.html ', Титулы: { TransactionID: { значение: нулевой, сквош: истинный }} , решительность: { TransactionID: [ '$ stateParams', функция ($ stateParams) { console.log ($ stateParams); return $ stateParams.transactionid }] } –

+0

потому что параметр? Transactionid возвращается из платежного шлюза, и я не могу его изменить – NVO

ответ

0

Я думаю, что лучше использовать стандартную маршрутизацию (у вас есть больше возможностей, и это более easy..and не имеют для удаления ничего) .. что-то вроде:

.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} 
     }] 
    } 
+0

Хм, измените его, но console.log в разрешении, по-прежнему возвращает 'transactionid: null ' – NVO

+0

что делать, если я прав? –

+0

Это работает, если URL-адрес похож на 'website.com/payment-success/value/squash', но URL-адрес похож на'/payment-success? Transactionid = someid' – NVO

Смежные вопросы