Ionic framework ionicView.eingetragen event gefeuert zweimal

Ich hab das Spiel mit diesem ionicView Ereignisse, die ausgelöst werden, wenn der Blick auf, aktiv zu werden, und ich bin mit der Seite-Menü-Vorlage, die Sie wieder verwenden können, wenn Sie das Projekt erstellen. Es scheint, dass, wenn ich einen listener für das $ionicView.eingetragen event in der AppCtrl (der die Seite im Menü-template, das gehört zu einem abstrakten Zustand, in dem ui-router-Konfiguration) es wird als zweimal in Folge für die Untersichten (wie bei der Verwendung von app.someotherview als Staat).

Ich weiß nicht, ob dies das erwartete Verhalten, weil aus der Dokumentation würde ich erwarten, dass es Feuer nur einmal, egal ob ich die Untersicht (die menuContent-Ansicht).

Ich würde gerne wissen, ob dies ist das erwartete Verhalten, und wenn ja, wie bekomme ich ein event nur ausgelöst, nachdem jedes mal, wenn er bekommt, um zu zeigen Sie die Seite im Menü-template.

Dies ist, was ich habe geschrieben:

Dies ist von der Anwendung Modul:

.config(function($stateProvider, $urlRouterProvider, $httpProvider) {
  $stateProvider

  .state('app', {
    url: "/app",
    abstract: true,
    templateUrl: "templates/menu.html",
    controller: 'AppCtrl'
  })

  .state('app.overview', {
    url: "/overview",
    views: {
      'menuContent': {
        templateUrl: "templates/overview.html",
        controller: 'OverviewCtrl'
      }
    }
  })

  .state('login', {
    url: "/login",
    templateUrl: "templates/identificationscreen.html",
    controller: "IdentificationCtrl"
  })

  .state('app.agenda', {
    url: "/agenda",
    views: {
      'menuContent': {
        templateUrl: "templates/agenda.html",
        controller: 'AgendaCtrl'
      }
    }
  });

  $httpProvider.interceptors.push('credentialsInjector');

  //if none of the above states are matched, use this as the fallback
  $urlRouterProvider.otherwise('/login'); 

Dann die AppCtrl ist diese:

angular.module('dashboard.controllers.app', [])
.controller('AppCtrl', function($scope, $ionicModal, $timeout, $ionicSideMenuDelegate, authService, $state) {
    $scope.logout = function() {
        authService.logout();
        $state.go('login');
    };

    $scope.$on('$ionicView.enter', function(){ //This is fired twice in a row
        console.log("App view (menu) entered.");
        console.log(arguments); 
    });

    $scope.$on('$ionicView.leave', function(){ //This just one when leaving, which happens when I logout
        console.log("App view (menu) leaved.");
        console.log(arguments);
    });
}); 

Menü Vorlage:

<ion-side-menus enable-menu-with-back-views="false">
  <ion-side-menu-content edge-drag-threshold="true">
    <ion-nav-bar class="bar-stable">
      <ion-nav-back-button>
      </ion-nav-back-button>
      <ion-nav-buttons side="left">
        <button class="button button-icon button-clear ion-navicon" menu-toggle="left">
        </button>
      </ion-nav-buttons>
    </ion-nav-bar>
    <ion-nav-view name="menuContent"></ion-nav-view>
  </ion-side-menu-content>

  <ion-side-menu side="left">
    <ion-header-bar class="bar-stable">
      <h1 class="title">APPoint!</h1>
    </ion-header-bar>
    <ion-content>
      <ion-list>
        <ion-item nav-clear menu-close href="#/app/overview">
          Overview
        </ion-item>
        <ion-item nav-clear menu-close href="#/app/agenda">
          Agenda
        </ion-item>
        <ion-item nav-clear menu-close ng-click="logout()">
          Logout
        </ion-item>
      </ion-list>
    </ion-content>
  </ion-side-menu>
</ion-side-menus>
  • du hast die Lösung für dieses Problem?
Schreibe einen Kommentar