尝试使用Ui路由器重新加载页面,适用于chrome,但不适用于safari和firefox

时间:2016-06-15 10:48:13

标签: javascript angularjs angular-ui-router

我在我的应用中使用ui-roter。当我发送hardRelad参数时,我希望我的页面重新加载。

这就是我去那个州的方式。

$state.go("widget", {"widgetUrl" : url, "hardReload": true});

这是我的控制器,我在传递参数时重新加载。

这适用于chrome,但不适用于safari和chrome。它重新加载归属状态localhost:8080/#

(function(){

  'use strict'

  angular
    .module('myApp')
    .controller('WidgetController', controllerFunction)
  controllerFunction.$inject = ['$window', '$stateParams', '$scope'];

  function controllerFunction($window, $stateParams, $scope) {
    var vm = this;
    $scope.widgetUrl = $stateParams.widgetUrl;
    if($stateParams.hardReload) {
      $window.location.reload();
    }
  }
})();

这是我的路由定义

$stateProvider
  .state('home', {
    url: '/',
    templateUrl: 'views/main.html',
    controller: 'MainCtrl as vm'
  })
  .state('widget', {
    url: '/widget/{widgetUrl}',
    params: {
      hardReload: false
    },
    templateUrl: 'views/widget.html',
    controller: 'WidgetController as vm'
  });

1 个答案:

答案 0 :(得分:0)

我用$locationChangeSuccess这个有效。谢谢你的帮助

$rootScope.$on('$locationChangeSuccess',
  function (event) {
    if(event.currentScope.hardReload) {
      $window.location.reload();
    }
  });