2016-08-24 9 views
0

私は以下のようなUI-ルータの設定を持っている:角度UI-ルータのダイナミックのparamsダブルスラッシュ

.state('xxx.components',{ 
      url: '/:runId/component', 
      reloadOnSearch: false, 
      templateUrl: '/modules/xxx//views/cloud-components/templates/cloud-components.tpl.html', 
      controller: 'CloudComponentsCtrl', 
      controllerAs: 'ctrl' 
     }) 

私はどのRUNIDなしコンポーネントページに行けば、URLは以下のようになります。

http://localhost:3031/xxx/run-topologies//component 

URLに二重スラッシュが含まれています。下のようにスラッシュが1つしか含まれないようにしたいのですが、この問題を解決するにはどうすればよいですか?

挙動を期待:RUNIDと

を:RUNIDせず(これは、電流設定に正しい)

http://localhost:3031/xxx/run-topologies/6/component 

(1つだけスラッシュでなければならない)

http://localhost:3031/xxx/run-topologies/component 
+0

IDがない場合、SPAは異なる動作をしますか?もしそうなら、あなたはLizzieが示唆したように2つの異なる州を使うべきです。 –

答えて

2

AFAIKはあなたが求めていることはありません。しかし、どちらのルートにもCloudComponentsCtrlを使用する2つの方法があります。

  1. RUNID

    せずにURLを別々の状態を定義し
    .state('xxx.components',{ 
        url: '/component', 
        reloadOnSearch: false, 
        templateUrl: '/modules/xxx/views/cloud-components/templates/cloud-components.tpl.html', 
        controller: 'CloudComponentsCtrl', 
        controllerAs: 'ctrl' 
    }) 
    .state('xxx.componentsForRunId',{ 
        url: '/:runId/component', 
        reloadOnSearch: false, 
        templateUrl: '/modules/xxx/views/cloud-components/templates/cloud-components.tpl.html', 
        controller: 'CloudComponentsCtrl', 
        controllerAs: 'ctrl' 
    }) 
    
  2. ルートからRUNIDを削除し、クエリパラメータとしてそれを含めます。

    .state('xxx.components',{ 
        url: '/component?runId', 
        reloadOnSearch: false, 
        templateUrl: '/modules/xxx/views/cloud-components/templates/cloud-components.tpl.html', 
        controller: 'CloudComponentsCtrl', 
        controllerAs: 'ctrl' 
    }) 
    

    次に、$stateParamsからrunIdにアクセスできます。

これは何らかの形で問題を解決します。

+0

あなたの答えをありがとう。私はあなたの答え#2と一緒に行きます。私の実際のケースはこの例よりも複雑であり、私も答え#1を使って試してみましたが、まだ修正することがたくさんあるようです。答え#2は完璧です! –

関連する問題