angular state.go函数不会重定向到上一页

时间:2016-12-22 15:36:02

标签: angularjs modal-dialog

我必须从主菜单中显示一个模态。模态显示正确。但是当我关闭模态时,我希望显示前一个网址。 这是模态的代码:

.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;
    });
   } ]);

这是关闭模态的功能:

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

当我进入代码时,url,templateUrl和controller都拥有正确的数据。但是页面没有显示。 关闭模态时显示的页面为reportSettingModal

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以使用$state.go,但这不是一个好习惯。因为,一般来说,显示模态和状态变化之间不应该有任何关系。显示模态应该独立于路径配置。只需使用addClassremoveClass之类的内容即可在您点击链接或按钮时显示模式。

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

以同样的方式关闭模态。