【问题标题】:Angularjs UI-Router workflow for async data用于异步数据的 Angularjs UI-Router 工作流
【发布时间】:2015-07-31 10:59:24
【问题描述】:

我有一个用于产品目录的相当简单的 Angular 应用程序,它从 CMS 中提取一个大的 JSON 文件。 JSON 包含应用程序的多个部分(菜单、分页、产品列表、产品详细信息)所需的信息,因此需要多个控制器访问它。
我这样做的方式是定义

$rootScope.$on('$stateChangeStart',
    function(evt, toState, toParams, fromState, fromParams){  
        loader.getData(toParams);
    }); 

app.run();loader 工厂然后 $broadcasts 将数据发送到所有控制器。这工作正常,但应用程序在每次状态更改时都会“闪烁”,因为 UI-Router 在等待异步数据时启动控制器/加载没有数据的模板。
我想这样做的正确方法是在$stateProvider.state() 中使用resolve,但我不知道如何将我的加载程序注入配置或使我的数据可用于所有其他控制器。
有没有办法让 resolve 等待广播?还是有其他方法?
这是我的第一个 Angular 项目,如果这很容易/明显或愚蠢,请原谅。
谢谢!

【问题讨论】:

    标签: json angularjs asynchronous angular-ui-router


    【解决方案1】:

    对于遇到同样问题的任何人:依赖项不需要注入到配置中,它们会进入解析,这需要一切。所以我的代码现在看起来像这样:

    `.state('produkte.list',{
        url:':main/:sub/?p=:page&o=:order&f=:filter&b=:brand',
        resolve : {
          data:['$stateParams','loader',function($stateParams,loader) {
            return loader.getData($stateParams);
          }]
        },  
        [...]`
    

    加载器仍然将它的结果广播给任何感兴趣的控制器,所以一切都很好(意思是,它可以工作)

    【讨论】:

      猜你喜欢
      • 2015-02-22
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多