1

私は、ui-routerのバージョン0.3.2と1.5を使用するWebアプリケーションで作業しています。私はバックボタンの問題を抱えています。私はバックボタンを押してURLを適切な状態のURLに更新しますが、ページを再読み込みしたりレンダリングしたりしません。新しい状態(更新されたURL)のコントローラは実行されません。uiルータのバックボタンの問題

$stateProvider 
.state('home', { 
    url: '/', 
    reloadOnSearch: false, 
    templateUrl: 'homePage.html', 
    controller:'homeController' 
}) 
.state('home.overView', { 
    url:'overView', 
    reloadOnSearch: false, 
    views: { 
    ovSB: { 
     templateUrl: 'searchParameterBarTemplate.html', 
     controller: 'searchParameterBarController' 
    } 
    } 
}) 
.state('home.overView.result', { 
    url:'/:docType?abc&xyz&type&user&temp1&temp2', 
    abstract: true, 
    reloadOnSearch: false, 
    templateUrl: 'resultViewTemplate.html', 
    controller : 'resultPanelController' 
}) 
.state('home.overView.result.dashboard', { 
    url:'', 
    reloadOnSearch: false, 
    views: { 
    'chart': { 
     templateUrl: 'chart-template.html', 
     controller: 'chart-Controller' 
    }, 
    'oVGrid': { 
     templateUrl: 'ov-grid-template.html', 
     controller: 'ov-grid-controller' 
    }, 
    'filterGrid': { 
     templateUrl: 'filter-stats-template.html', 
     controller: 'filter-stats-controller' 
    } 
    } 
}) 
.state('home.delta',{ 
    reloadOnSearch: false, 
    url:'Delta', 

    views:{ 
    pcSB:{ 
     templateUrl: 'search-parameterbar-delta-template.html', 
     controller : 'search-parameterBar-delta-controller' 
    } 
    } 
}) 
.state('home.delta.result',{ 
    url:'/:docType?xyz_1&abc_1&xyz_2&abc_2', 

    reloadOnSearch: false, 
    templateUrl: 'delta-template.html', 
    controller : 'delta-controller' 
}) 
.state('home.details', { 
    url: 'details', 

    views: { 
    detailsSB: { 
     templateUrl: 'search-paramBar-details-template.html', 
     controller: 'search-paramBar-details-controller' 
    } 
    } 
}) 
.state('home.details.result', { 
    url: '/:documentType?abc&xyz&user&temp1&temp2', 
    abstract: true, 
    templateUrl: 'details-view-template.html', 
    controller: 'details-view-controller' 
}) 
.state('home.details.result.dashboard',{ 
    url:'', 
    views:{ 
    perGraph : { 
     controller :'per-graph-controller', 
     templateUrl: 'per-graph-template.html' 
    }, 
    detailsGrid: { 
     controller: 'details-grid-controller', 
     templateUrl: 'details-grid-controller-template.html' 
    } 
    } 
}); 

だから例えば私はhome.overview.result.dashboardから移動する場合は、私の状態の設定され、次の(URL - >はlocalhost:12345 /概要/ DOCTYPE ABC & XYZ &ユーザー& TEMP1 & TEMP2? ?12345 /詳細/ DOCTYPE ABC & XYZ &ユーザー& TEMP1 & TEMP2と反撃:URL ローカルホストで状態をhome.details.result.dashboardする)状態ボタン、ローカルホストへのURLの更新:?12345 /概要/ DOCTYPE ABC & XYZ &ユーザー& TEMP1 & TEMP2それはリロードしないが/ページをレンダリングします。

私はこのsolutionを使用してリロードをトリガーすることができると信じていますが、私はこれよりも優れたソリューションを探しています。私は状態の設定/間違っていると何かが欠けているのですか?これに関連するどんな助けも高く評価されるでしょう。 ありがとう

+0

あなたの 'home'状態からreloadOnSearchを削除しようとしました – Ero

+0

は、問題を解決しませんでした –

答えて

1

$ stateChangeStartイベントが発生します。 locationディレクティブを使用してそれをルーティングします。下記のスニペットを参照してください

$rootScope.$on('$routeChangeStart', function (event,next) { 
    $location.path(next.$$route.originalPath); 
}); 

これで問題を解決できます。完全な解決策ではありません