在 $state.go 之后执行 $window.location.reload(true)

Posted

技术标签:

【中文标题】在 $state.go 之后执行 $window.location.reload(true)【英文标题】:Do $window.location.reload(true) after $state.go 【发布时间】:2015-04-03 14:16:31 【问题描述】:

我正在开发这个 Ionic/Cordova 应用程序,我必须在 $state.go 之后重新加载。我就是这样做的

$state.go('app.menu', , reload: true).then(function()
              $window.location.reload(true);
      );

上面的代码在浏览器上运行良好,当我将它加载到 iPhone 模拟器时出现问题。问题是它没有进入指定状态,即app.menu

但如果我删除$window.location.reload(true);,它确实会进入状态。

你认为是什么问题?

编辑:如果我添加超时,它会起作用,但我不想这样做。像这样

$state.go('app.menu', , reload: false).then(function()
        setTimeout(function() 
          $window.location.reload(true);
        , 500);
      )

【问题讨论】:

你试过 location.reload(true); @ZeeshanHassanMemon 我刚试过,同样的事情正在发生。 你可以尝试通过设置 cache:false like .state('app.menu', cache:false, url: 'you_url_here', @ZeeshanHassanMemon 我应该删除重新加载行吗? 是的,尽量避免以这种方式重新加载,我不知道你的情况是什么,但在单页应用程序中 .reload 应用程序会产生问题 【参考方案1】:

立即使用 $timout。它对我有用。

$timeout(function() 
    $window.location.reload(true);
);

【讨论】:

【参考方案2】:

这对我有用:Source Here。

根据设计,视图被缓存。 在您的状态下尝试 cache: false

$stateProvider.state('myState', 
    cache: false,
    url : '/myUrl',
    templateUrl : 'my-template.html'
)

【讨论】:

以上是关于在 $state.go 之后执行 $window.location.reload(true)的主要内容,如果未能解决你的问题,请参考以下文章

Angular ui-router 中 $state.transitionTo() 和 $state.go() 之间的区别

Ionic $state.go 在设备上不起作用

AngularJS UI-Router 中 ui-sref 和 $state.go 的区别

$state.go 没有改变 URL

关于angularjs的$state.go()与ui-sref传参问题

UI 路由器 $stateparams 未在 $state.go() 中注册