如何从工厂或服务将自定义数据放入UI-Router状态?

时间:2015-03-07 14:41:13

标签: angularjs angular-ui-router

在下面的示例中,我有一个具有角色的自定义数据对象。这是从数组中的函数返回的,但我想从服务或工厂调用此函数。

.state('WorkArea', {
   parent: 'site',
   url: '/WorkArea',
   data: {
       roles: (function () {
           return ['User', 'Dev'];
       })()
   }
})

如何以这种方式从工厂或服务方法将数据导入UI-Router状态?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您可以使用UI路由器的解析功能。

.state('WorkArea', {
  parent: 'site',
  url: '/WorkArea',
  resolve: {
    roles: function(Roles) {
      return Roles.all();
    }
  },
  controller: 'WorkAreaCtrl'
});

其中Roles是这样的:

.service('Roles', function() {
  this.all = function() {
    return ['User', 'Dev'];
  };
});

并且WorkAreaCtrl与此类似:

.controller('WorkAreaCtrl', ['roles', function(roles) {
  $scope.roles = roles;
}]);