当应用程序从我的服务settings
加载时,我想为每个状态加载一次data
和params
(此服务还返回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
指令构建链接htmlparams
)。
问题是我无法将 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/