javascript - Angular ui 路由器 : load values for data and params from service

标签 javascript angularjs angular-ui-router angular-services

当应用程序从我的服务settings加载时,我想为每个状态加载一次dataparams(此服务还返回promise 因为数据是异步加载的)。
像这样的事情:

  .state('tutorials', {
    url: '/tutorials',
    templateUrl: 'partials/tutorials.html',
    controller: 'TutorialsCtrl',
    data: {details: false},  // instead of false I want: settings.get('tutorials_data_details')
    params: {popular: '512'} // instead of '512' I want: settings.get('tutorials_params_popular')
  })

在进入任何状态之前,必须为所有状态加载这些 params,因为它们用于与可放置在任何 中的 ui-sref 指令构建链接html 指向任何状态(并且将使用那些默认的params)。

问题是我无法将 service 注入(inject) config 函数。并且使用 resolve 不会立即处理所有状态。

我认为可以使用$stateProvider.decorator,但我不知道如何使用。

最佳答案

我会发表评论,但没有足够的声誉。

如果可能,一种选择是创建一个父抽象状态,例如app,这样你的状态树就会变成app.tutorials然后您可以在 app 状态上使用 resolve ,允许所有子状态使用数据/参数。

像这样:

.state('app', {
url: '',
abstract: true,
templateUrl: 'partials/tutorials.html',
controller: 'AppCtrl',
resolve: { <resolve your dependencies here> }
})

.state('app.tutorials', {
    url: '/tutorials',
    templateUrl: 'partials/tutorials.html',
    controller: 'TutorialsCtrl'
})

请注意,在解析完成之前,教程状态不会加载。

关于javascript - Angular ui 路由器 : load values for data and params from service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39718277/

相关文章:

android - 将 AngularJS 连接到 Phonegap/Cordova

javascript - 如果 AngularJS 中的父状态 Controller 发生更改,如何重新加载子状态?

javascript - 将脚本应用于项目中的所有页面

angularjs - 如何从指令链接功能更新 AngularJS 模型?

javascript - $locationChangeStart 仅在后退按钮上

javascript - "Failed to instantiate module ' app ' due to" Angular 和平均堆栈

javascript - 使用 AngularJS 单击内容选项卡路由到不同页面

angularjs - 如何禁用 Angular ui 路由器状态的数据继承

javascript - 带有复选框和单选按钮的 AngularJS 自定义过滤器

javascript - 该类已添加到 HTML 元素,但根本未应用 CSS 规则。为什么?