简体   繁体   English

Angular ui路由器-将stateParams传递给其他控制器

[英]Angular ui router -pass stateParams to other controller

This is part of my state provider: 这是我的状态提供程序的一部分:

  $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',

Some content on sidebar should change depending on objectId. 侧栏上的某些内容应根据objectId进行更改。 I can access $stateParams.objectId in ObjectDetailsController but I would like to access them in sidebar controller. 我可以在ObjectDetailsController访问$stateParams.objectId ,但我想在侧边栏控制器中访问它们。 Maybe pass them to parent, and then parent should pass value to sidebar. 也许将它们传递给父级,然后父级应该将值传递给侧栏。

Did you try to pass the data via the params options in $stateProvider ? 您是否尝试通过$stateProviderparams选项传递数据?

The API can be found here . 该API可以在这里找到

So your code can look like this: 因此,您的代码如下所示:

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

You can pass the param inside the view: 您可以在视图内部传递参数:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM