Angular-breadcrumb:标签/父母关系

时间:2016-12-09 17:03:17

标签: angularjs angular-ui-router ncybreadcrumb

我正在尝试在我的应用程序中使用ncy-breadcrumb,但我不知道如何解决某个特定情况。

首先,我有这两种状态:

{
          state: 'installation-edit',
          config: {
              abstract: true,
              url: '/installation-edit/{installationId}',
              templateUrl: 'app/installation/edit/installation.edit.html',
              controller: 'InstallationEditController',
              title: 'installation.edit.tab.title'
          }
      },
      {
          state: 'installation-edit.detail',
          config: {
              url: '',
              views: {
                  'maindata': {
                      templateUrl: 'app/installation/edit/installation.edit.main.data.html',
                      controller: 'InstallationEditMainDataController',
                      controllerAs: 'vmInstMainData'
                  },
                  'equipments': {
                      templateUrl: 'app/installation/edit/installation.edit.equipments.html',
                      controller: 'InstallationEditEquipmentsController',
                      controllerAs: 'vmInstEquipments'
                  },
                  'users': {
                      templateUrl: 'app/installation/edit/installation.edit.users.html',
                      controller: 'InstallationEditUsersController',
                      controllerAs: 'vmInstUsers'
                  }
              },
              ncyBreadcrumb: {
                  label: '{{installationName}}'
              }
          }
      }

installationName变量在InstallationEditController中定义为适当的值,如下所示:

function activate() {

InstallationEditMainDataService.getInstallationMainData($stateParams.installationId)
                .then(
                        function(response) {
                            $scope.installationName = response.data.name;
                        }
                );
        }

此时一切正常。让我们说 MY-INSTALLATION 会显示在我的HTML

现在我有了一个新的状态,我想成为前一个的子状态,但这不是angular-ui-router配置中真正的父/子关系,所以我使用父属性。此状态定义如下:

state: 'equipment-general-view',
        config: {
          url: '/equipment-general-view/{equipmentId}',
          templateUrl: 'app/equipment/general-view/general.view.html',
          controller: 'EquipmentGeneralViewController',
          controllerAs: 'vmEquipmentGeneralView',
          title: 'equipment.general.view.tab.title',
          ncyBreadcrumb: {
              label: '{{equipmentName}}',
              parent: 'installation-edit.detail({installationId: 128032})'
          }
        }

此时,通过执行与上一个案例相同的过程,equipmentName中的EquipmentGeneralViewController被正确解析。让我们说equipmentName已解决为 MY-EQUIPMENT

这个想法是ncy-breadcrumb显示以下内容: MY-INSTALLATION / MY-EQUIPMENT intallationName此时尚未解决,因此只有 / MY-EQUIPMENT < / strong>显示。

我知道问题是什么,但我不知道如何解决它。在这种情况下,intallationName未解决,因为此时未执行InstallationEditController,因此intallationName为空。

如何从子状态传递intallationName的值?

谢谢。

1 个答案:

答案 0 :(得分:0)

我通过使用$ rootScope而不是$ scope来设置这些特殊的面包屑变量来解决问题:

$rootScope.installationName = response.data.name;