Controller aus übergeordnetem Layout ist für untergeordnete Ansichten nicht zugänglich.

Ich habe ein Layout für eine meiner Seiten eingerichtet, das dann mit einer Menge kleiner Ansichten gefüllt wird, mit denen ich das Datum auffülle. Meine Bundesstaaten sehen derzeit so aus:

  .state('eventLayout', {
    templateUrl: 'partials/layouts/event.html',
    controller: 'EventCtrl',
  })
  .state('event', {
    parent: 'eventLayout',
    url: '/event/{eventUrl}',
    views: {
      'event.video': {
        templateUrl: 'partials/views/event.video.html'
      },
      'event.info': {
        templateUrl: 'partials/views/event.info.html'
      },
      'card.event': {
        templateUrl: 'partials/views/card.event.html'
      },
      'card.clip': {
        templateUrl: 'partials/views/card.clip.html'
      },
      'card.upcoming': {
        templateUrl: 'partials/views/card.upcoming.html'
      },
      'card.banner': {
        templateUrl: 'partials/views/card.banner.html'
      },
      'card.comment': {
        templateUrl: 'partials/views/card.comment.html'
      },
      'card.notification': {
        templateUrl: 'partials/views/card.notification.html'
      },
      'card.cube': {
        templateUrl: 'partials/views/card.cube.html'
      },
      'card.mix': {
        templateUrl: 'partials/views/card.mix.html'
      },
      'card.score': {
        templateUrl: 'partials/views/card.score.html'
      },
      'card.sponsor': {
        templateUrl: 'partials/views/card.sponsor.html'
      },
      'card.nobroadcasters': {
        templateUrl: 'partials/views/card.nobroadcasters.html'
      },
      'card.link': {
        templateUrl: 'partials/views/card.link.html'
      },
      'card.suggest': {
        templateUrl: 'partials/views/card.suggest.html',
        controller: 'SuggestblockCtrl'
      },
      'card.footer': {
        templateUrl: 'partials/views/card.footer.html'
      }
    }
  })

Wie Sie sehen können, enthält das übergeordnete Layout meinen Controller für die Seite mit dem Namen EventCtrl. Jetzt würde ich erwarten, dass alle Ansichten jetzt Zugriff auf diesen Controller haben, aber das scheint nicht der Fall zu sein. Stattdessen muss ich die übergeordnete Hauptvorlage von @ umbrech eventLayout in einem div wo ich dann einfach die alte schule benutze:

 <div ng-controller="EventCtrl"></div>

Ich möchte zumindest verstehen, warum dies so ist und wie sichergestellt werden kann, dass alle Ansichten Zugriff auf den Hauptcontroller des Status haben. Vielen Dank

BEARBEITEN

Um mehr Kontext hinzuzufügen, um zu sehen, wie ich die Ansichten in meiner aktuellen App verwende, habe ich die aktuelle Einrichtung unten aufgeführt.

Aus der Datei partials / layouts / event.html im übergeordneten $ state eventLayout

<div ng-controller="EventCtrl">
<div ui-view="event.video"></div>
  <div ng-repeat="activity in activities.results">
    <div ng-if="activity.card_type == 'event'" ui-view="card.event"></div>
    <div ng-if="activity.card_type == 'clip'" ui-view="card.clip"></div>
    <div ng-if="activity.card_type == 'upcoming'" ui-view="card.upcoming"></div>
  </div>
</div>
</div>

Wie Sie sehen können, sind Ansichten im übergeordneten Layout verschachtelt. Ich muss alles mit ng-controller = "EventCtrl" abschließen, damit jede Ansicht auf ihren Gültigkeitsbereich zugreifen kann.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage