AngularJs UI-Router - 页面刷新$ state.current现在为空

时间:2015-04-29 11:35:05

标签: angularjs angular-ui-router

我有一个使用Angular的{​​{1}}应用程序,每当我刷新页面时都会遇到问题。我正在使用嵌套视图,命名视图来构建应用程序。每当我刷新页面时,ui-router都不会重新加载当前状态,只会将页面留空。

页面加载ui-router等于

$state.current

我正在通过Object {name: "", url: "^", views: null, abstract: true} .json文件中读取导航并循环显示各州。所以这就是我能展示的:

$http

为嵌套的json对象中的每个项执行此代码。如果还有其他任何有用的信息,请告诉我。

2 个答案:

答案 0 :(得分:5)

有一个问题:AngularJS - UI-router - How to configure dynamic views有一个答案,说明了如何做到这一点。

  

发生了什么事?刷新时,会更快地评估 if($numrows = 0 and isset($_POST['search'])){ ,然后注册状态。我们不得不推迟。解决方案由url原生功能UI-Router

驱动

$urlRouterProvider.deferIntercept(defer)

正如文件中所述:

  

停用 (或启用) 推迟更改位置更改。

     

如果您希望自定义同步URL的行为(例如,如果您希望延迟转换但保留当前URL),请在配置时调用此方法。然后,在运行时,在配置自己的deferIntercept(defer)事件处理程序后调用$urlRouter.listen()

简而言之,我们将在配置阶段停止URL处理:

$locationChangeSuccess

一旦我们从JSON配置了所有动态状态,我们将在.run()阶段重新启用它:

app.config(function ($urlRouterProvider) {

  // Prevent $urlRouter from automatically intercepting URL changes;
  // this allows you to configure custom behavior in between
  // location changes and route synchronization:
  $urlRouterProvider.deferIntercept();

})

链接的plunker

中有Q & A

答案 1 :(得分:1)

我不知道你的所有路线是怎样的......但是如果刷新子状态的页面,你需要传递父状态的所有参数才能正确解析。