Angular ui router -pass stateParams to other controller

时间:2015-04-16 07:26:49

标签: angularjs angular-ui-router

这是我的州提供者的一部分:

  $stateProvider.state('root', {
         url: '',
          abstract: true,
          templateUrl: viewsRoot + "layout.html",
          controller: 'LayoutController',
           views: {
          'container': {
            templateUrl: viewsRoot + "container.html",

          },
          'sidebar': {
                 templateUrl: viewsRoot + "sidebar.html",
                 controller: 'SidebarController'

          }
       }
      })
      .state('layout.sidebar', {
          abstract: true,
          templateUrl: viewsRoot + "sidebar.html",
          controller: 'SidebarController'
      })
          .state('layout.container', {
              abstract: true,
              templateUrl: viewsRoot + "container.html",
            //  controller: 'ObjectDetailsController' 
          })
          .state('root.object-details', {
              url:'object-details/:objectId',
              templateUrl: viewsRoot + "object-details.html",
              controller: 'ObjectDetailsController',

侧边栏上的某些内容应根据objectId进行更改。我可以访问 $stateParams.objectId中的ObjectDetailsController,但我想在侧边栏控制器中访问它们。也许将它们传递给父级,然后父级应该将值传递给侧栏。

1 个答案:

答案 0 :(得分:0)

您是否尝试通过params中的$stateProvider选项传递数据?

The API can be found here

所以你的代码看起来像这样:

.state('layout.sidebar', {
  abstract: true,
  templateUrl: viewsRoot + "sidebar.html",
  controller: 'SidebarController',
  params: {id: 'value'}
})

您可以在视图中传递参数:

<a ui-sref="layout.sidebar({id: 'object.Id'})></a>