2016-12-22 4 views
0

メインメニューからモーダルを表示する必要があります。モーダルは正しく表示されます。しかし、モーダルを閉じると、私は前のURLを表示したい。 これはモーダルためのコードである:angular state.go関数は前のページにリダイレクトしません

.config(function ($stateProvider, $urlRouterProvider) { 
    $stateProvider 
     .state('home', { 
     url: '/home', 
     templateUrl: 'views/home.html', 
     controller: 'HomeCtrl' 
     }) 
     .state('pos',{ 
     url: '/pos', 
     templateUrl: 'views/pos.html', 
     controller: 'PosCtrl' 
     }) 
     .state('vAnalyze',{ 
     url: '/vAnalyze', 
     templateUrl: 'views/vAnalyze.html', 
     controller: 'VAnalyzeCtrl' 
     }) 
     .state('reportSetting',{ 
     url: '/reportSettingModal', 
     onEnter: function($modal){ 
      $modal.open({ 
       templateUrl: 'views/reportSettingModal.html', 
       controller: 'ReportSettingModalCtrl' 
      }); 
     } 
     }) 
     .state('error', { 
     url: '/error', 
     templateUrl: 'lib/views/error.html', 
     controller: 'ErrorCtrl' 
     }); 

    // if none of the above states are matched, use this as the fallback 
    $urlRouterProvider.otherwise('/home'); 
    }) 

    .run(['AuthService', 'configSettings', '$rootScope', function (AuthService, configSettings, $rootScope) 
    { // Apply Product Code 
    configSettings.productCode = 'VANALYZE'; 
    AuthService.configProduct(configSettings.productCode); 
    $rootScope.$on('$stateChangeSuccess', function(event, to, toParams, from, fromParams) { 
     $rootScope.$previousState = from; 
    }); 
    } ]); 

これは、モーダルを閉鎖する機能である:私は、コードのURLにステップするとき

$scope.close = function() { 
     $uibModalInstance.close(); 
     $state.go($rootScope.$previousState.name, { 
     url: $rootScope.$previousState.url, 
     templateUrl: $rootScope.$previousState.templateUrl, 
     controller: $rootScope.$previousState.controller 
     }); 
    }; 

、templateUrlコントローラ全ては、正しいデータを持っています。しかし、ページは表示されません。 モーダルを閉じると表示されるページはreportSettingModalです。

私は間違っていますか?

+0

URLは変更されますか、それとも起こりませんか? ところで、なぜ$ state.goにこのオブジェクトの2番目のパラメータを渡していますか? また、私はルータをモーダルに使うことはありませんが、それはUCに依存します(例えば、モーダルはブックマーク可能でなければなりません) –

+0

異なるページからモーダルを開始すると、URLが変わります。 state.go関数のために、私はこれをやってみました: '$ state.go($ rootScope。$ previousState.name)'しかし、ページは変更されませんでした。だから、それがもっと明白であれば、それはうまくいくと思った。しかし、それはしませんでした。私はあなたが「モーダルにルータを使う」という意味を知らない。通常、私はページからモーダルを呼び出しており、メインページを閉じると閉じます。このモーダルは、メインメニューから呼び出されます。 –

+0

メニューバーのクリックからモーダルオープンを行うだけです。 –

答えて

0

$state.goを使用するといいですが、それは良い方法ではありません。一般的に、モーダルと状態の変更を表示することとは関係がないためです。モーダルを表示することは、ルート設定とは独立している必要があります。あなたがリンクやボタンをクリックしたときにモーダルを表示するには、addClassまたはremoveClassのようなものを使用してください。

$scope.show = function(){ 
// open modal here by adding a class to the modal element 
} 

同様に、モーダルを閉じます。

+0

このショー機能はどこに置くのですか?メニューバーには、ユーザーがアイコンをクリックするとモーダルが表示されます。 –

+0

それから 'mainController'に書き込みます。すべての状態から可視でクリック可能で、' mainController'はすべてのコントローラの親コントローラか独立した手段のいずれかに 'menuController'を書かなければなりません。 –

+0

私は別の方向に進むことに決めました。 .state関数からopen.modalを削除しました。なぜなら、実際には状態ではないからです。 (申し訳ありませんが、私は角度を覚えており、これを認識していませんでした)。ヘッダーテンプレートにclickイベントを追加し、開いているモーダル関数をすべてのページに追加しました。これは現在、アスペクトとして機能しています。 –

関連する問題