簡體   English   中英

Angular 1 / Ui路由器-將數據從解析傳遞到控制器

[英]Angular 1/Ui-router - Pass data from resolve to controller

我想通過解析將數據( contactName )從狀態傳遞到控制器:

.state({
      name: 'contact.detail.overlay',
      abstract: true,
      component: 'overlayContent',
      resolve: {
        contactName: (originalContact, $rootScope, ContactService) => {
          $rootScope.contactName = ContactService.getContactName(originalContact)
          return $rootScope.contactName
        }
      }
    })

在我的狀態下,一切都是正確的, contactName也是正確的,但是在我的overlayContent控制器中無法訪問它,您是否有解決方案來在控制器中具有$rootScope.contactName訪問權限?

編輯:控制器:

class overlayContentComponent {

  constructor($state, $interpolate, $scope) {
    'ngInject'
    this.$scope = $scope
    this.$state = $state
    this.$interpolate = $interpolate
  }

  /**
   *
   * On initialization hook, let's check if an overlay title
   * has been defined for the current state.
   */

  $onInit() {
    const stateData = this.$state.current.data || { title: '' }
    this.overlayTitle = angular.isDefined(stateData.title) ? this.$interpolate(stateData.title)() : ''
  }
}

export const overlayContentComponent = {
  template: require('./overlay-content.html'),
  controller: overlayContentComponent
}

我可以訪問contactName在我的控制器通過this.$scope.$root.contactName ,但我想,以避免$scope.$root的另一種選擇

更改您的構造函數:

constructor($state, $interpolate, $scope, contactName) {
  'ngInject';
  // The variable you want:
  this.contactName = contactName;
  this.$scope = $scope
  this.$state = $state
  this.$interpolate = $interpolate
}

現在應將“ contactName”解析注入該狀態(解析所駐留的位置)的控制器中。 如上所述,這應該允許您在控制器中訪問它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM