【问题标题】:Sharing resolved data between controllers - UI Router在控制器之间共享解析的数据 - UI 路由器
【发布时间】:2016-01-24 19:59:19
【问题描述】:

我正在使用 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?

【问题讨论】:

    标签: angularjs angular-ui-router


    【解决方案1】:

    如果所有其他状态都从auth 继承,那么(通过https://github.com/angular-ui/ui-router/wiki/Nested-States-and-Nested-Views#what-do-child-states-inherit-from-parent-states)它们的控制器也可以注入已解析的campaigns

    【讨论】:

    • 干净整洁,就像它应该的那样。不知道我是怎么错过的。谢谢!
    猜你喜欢
    • 2020-11-26
    • 2015-12-15
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多