将父作用域变量传递给ui-view组件

时间:2016-08-04 04:26:05

标签: angularjs angularjs-directive angularjs-scope angular-ui-router angularjs-components

我使用angular-ui / ui-router并且指定/组件的隔离范围定义为在状态更改时呈现。

$stateProvider
    .state('about', {
      url: '/about',
      template: '<about></about>'
    })
    .state('blog', {
      url: '/blog',
      template: '<blog></blog>'
    })

我的主页是一个指令,用于在用户的控制器

中加载所有权限
app.directive('main', function() {
  return {
    ...
    template: "<div><header></header><div ui-view></div></div>",
    controller: [..., function(...) {
       $scope.user = // $http load user
    }]
);

导航到不同的状态时,我希望将用户传递给所有ui-view指令/组件。但是,我无法找到一种很好的方法来实现这个 ,而不是resolve会在每次状态更改时加载用户或使用$rootScope

我正在寻找类似于以下内容的内容,其中user是来自父范围的内容。

$stateProvider
    .state('about', {
      url: '/about',
      template: '<about user="user"></about>'
    })
    .state('blog', {
      url: '/blog',
      template: '<blog user="user"></blog>'
    })

知道如何做到这一点?

2 个答案:

答案 0 :(得分:1)

在控制器中,您可以将用户分配给$ rootScope,如$rootScope.user = sth,然后您可以为每个状态URL添加控制器以使用户获得$scope.user= $rootScope.user,或者将rootScope用户传递为参数。

答案 1 :(得分:0)

你需要在你的控制器中使用$ rootscope

$rootScope.user = sth;

你可以得到像这样的用户

$scope.user= $rootScope.user;