【问题标题】:Await callback request api before start application angular在启动应用程序角度之前等待回调请求 api
【发布时间】:2023-04-03 22:18:01
【问题描述】:

我需要在引导应用程序 Angular 1 之前从 Api 端点加载一些参数。

我有一个工厂,其中包含我的请求端点函数并保存在内存中。我需要使用这个工厂来执行我的角色。问题是我无法在引导应用程序之前注入我的工厂。我无法创建具有相同想法的其他角色,我必须使用这个工厂来运行我的应用程序。

有人对这个案子有好的建议吗?谁已经需要这个案例了?

谢谢大家。

【问题讨论】:

  • 为什么要先从 API 加载 AngularJS 应用程序的参数?
  • 因为我的应用程序是 Sharepoint 2013 中的解决方案,所以我使用 Api Lists 中的 OData,我在其中找到了我在整个应用程序中使用的设置
  • 有没有办法预先知道这些值并将它们硬编码到应用程序中?
  • 不可能,这些数据在 Sharepoint 列表中可用
  • 如果您的应用程序需要的是数据而不是配置值,那么您需要像您一直在做的那样使用工厂,并在引导应用程序后立即解析该工厂数据。

标签: angularjs angular-ui-router angular-promise


【解决方案1】:

如果您使用ngRoute 路由器,您可以使用解析函数来延迟视图及其控制器的实例化,直到数据从异步 API 到达。

  • resolve - {Object.<string, Function>=} - 应注入控制器的可选依赖关系映射。如果这些依赖项中的任何一个是承诺,路由器将等待它们全部被解决或在控制器被实例化之前被拒绝。如果所有的 Promise 都成功解决,则注入已解决的 Promise 的值并触发 $routeChangeSuccess 事件。如果任何承诺被拒绝,$routeChangeError 事件就会被触发。为了更轻松地从模板访问已解析的依赖项,解析映射将在路由范围内可用,位于 $resolve(默认情况下)或由 resolveAs 属性指定的自定义名称(见下文)下。这在使用 components 作为路由模板时特别有用。

— AngularJS ngRoute $routeProvider API Reference

【讨论】:

【解决方案2】:

我认为您应该可以使用 angular-ui-router。您可以在路线上使用 resolve。这将迫使 Angular 在继续渲染控制器之前解析数据。 您可以在进入 ui-router 中的默认状态之前设置解析。

参考: https://github.com/angular-ui/ui-router/wiki#resolve

【讨论】:

  • 但是使用 ui-router,我需要解析所有使用我的参数工厂的控制器吗?而且我需要将我的 $routeProvider 本机 Angular 重构为 ui-router 的 $stateProvider?
猜你喜欢
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 2011-02-15
  • 2013-09-26
  • 1970-01-01
  • 2013-11-11
  • 2020-03-05
  • 1970-01-01
相关资源
最近更新 更多