【问题标题】:UI-router child resolves delays parent loadingUI 路由器子解决延迟父加载
【发布时间】:2014-11-07 13:47:18
【问题描述】:

子状态的解析正在延迟父状态的加载

我的状态配置为:

$stateProvider
          .state('a', {
            url: '/a/:aid',
            controller: 'ACtrl',
            templateUrl: 'a.html'
          })
          .state('a.b', {
            url: '/b/:bid',
            controller: 'BCtrl',
            templateUrl: 'b.html',
            resolve: {
              DataService: 'DataService',
              data: function(DataService) {
                return DataService.getData(); //Returns a http promise
              }
            }
          });

index.html:

<nav>
  ....
</nav>
<div ui-view></div>

a.html 有:

<sidebar>
...
</sidebar>
<div ui-view></div>

b.html 有:

<div ng-repeat="d in data">{{ d }} </div>

当我点击 url http://example.com/a/1/b/1 a.html 时不会立即加载。 我似乎状态“a”正在等待子状态“a.b”的解析完成。

我想要做的是加载 a.html(显示侧边栏和一个空的 div)可能带有加载图标,而子状态解决其依赖关系。 [编辑] 请注意,我的状态“a”没有解析,但它仍在等待其子项解析。我想主要避免这种情况

一旦所有内容都加载完毕,当我更改 bid 时,我希望它在孩子解析新数据时再次显示加载图标。

这是我第一次发布问题,所以如果我不够清楚,请提前道歉。

【问题讨论】:

  • 据我所知Chris T (UI-Router 团队成员) cmets 中的一个,计划在下一个版本中进行
  • 感谢 Radim Köhler,你给了我一些希望。我会检查他们的 github 页面,看看我是否可以验证这一点。
  • 嗨拉尔夫,我也遇到了完全相同的问题。父母等待它的孩子决心完成。你能确认他们是否正在 Github 上进行修复吗?另外,你最终做了什么作为替代方案?我的主要问题是整个视图被阻止渲染,因为子解析在我看来是一个主要错误。

标签: angularjs angular-ui-router


【解决方案1】:

加载顺序

当您直接访问子级时,Ui-router 首先加载父级,然后是子级。请从你的萤火虫那里检查一下。

在你的情况下,以下是顺序

  • a.html
  • a.b 解析过程(XHR 请求)
  • a.b.html

用于显示加载图片

方法 1

你可以试试angular-loading-bar 模块。它在处理 XHR 请求时管理页面中显示/隐藏加载的问题。此加载图像将显示在浏览器顶部。

这个想法很简单:每当 XHR 出现时添加一个加载条/进度条 请求以角度发出。同一时间内的多个请求 period 捆绑在一起,这样每个响应都会增加 适当数量的进度条。

这很酷,因为您只需将它包含在您的应用中,然后 作品。没有复杂的设置,也不需要维护状态 加载条;这一切都由拦截器自动处理。

方法 2

如果你想根据屏幕在特定位置显示加载图像,你需要通过你的控制器使用ng-show/ng-hide来处理它

【讨论】:

  • 这里最重要的是我的 a.html 直到它的子 promise 被解决后才会加载。这意味着我想先显示我的侧边栏(a.html 内容),然后在它解决其依赖关系后让子加载。
  • 哎呀!我相信,应该先加载父状态,然后再加载您的子状态。意思是 a.html > a.b resolve process > a.b.html ...您可以使用 firebug 或任何其他开发人员工具确认这一点。请同时发布屏幕截图...。下次,请清楚地发布您的问题...跨度>
猜你喜欢
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2020-05-31
  • 2017-12-07
相关资源
最近更新 更多