我正在使用UI路由器作为我的应用程序的路由器,我有一种情况,我需要始终拥有一个资源的所有实例。 这些实例列在我的应用程序的侧边栏中。 我在routes.js文件中启动了类似的东西:
.state('auth', {
url: '/',
abstract: true,
controller: RootCtrl,
template: '<div ui-view autoscroll="true"></div>',
resolve: {
campaigns: function(UserCampaignsCollection, activeUser) {
return (new UserCampaignsCollection).query({user_id: activeUser.id});
}
}
})
这意味着我必须创建单独的控制器,仅用于保留所有广告系列并在其他控制器之间共享,如下所示:
_app.controller('RootCtrl',
function($rootScope, campaigns) {
$rootScope.campaigns = campaigns;
});
这很好用,因为我只在一个地方解决它,然后我所有其他状态都继承了基本状态(如auth.account,auth.inovice等),但我想避免需要附加所有状态我的广告系列在rootScope上。
是否有其他方法可以将数据传递给其他控制器,这不会涉及创建这样的虚拟控制器,并将数据附加到rootScope?
答案 0 :(得分:1)
如果所有其他状态继承自auth
,那么(通过https://github.com/angular-ui/ui-router/wiki/Nested-States-and-Nested-Views#what-do-child-states-inherit-from-parent-states)他们的控制器也可以注入已解决的campaigns
。