wake-up-neo.com

warum wird $ routeChangeSuccess nie aufgerufen?

Ich mache etwas ähnliches wie in meiner App, aber ich kann das routeChangeSuccess -Ereignis einfach nicht abrufen. 

var myapp = angular.module('myapp', ["ui.router", "ngRoute"]);

myapp.controller("home.RootController",
  function($rootScope, $scope, $location, $route) {
    $scope.menus = [{ 'name': 'Home ', 'link': '#/home'}, {'name': 'services', 'link': '#/services'} ]

    $scope.$on('$routeChangeSuccess', function(event, current) {

      alert('route changed');
    });

  }
);

myapp.config(
  function($stateProvider, $urlRouterProvider, $routeProvider) {
    $urlRouterProvider.otherwise("/home");
    $stateProvider
      .state('home', {
        url: "/home",
        //template: '<h1>Home Screen</h1>'
        templateUrl: "/Client/Views/Home/Home.htm"
      })
      .state('services', {
        url: "/services",
        //template: '<h1>Service screen</h1>'
        templateUrl: "/Client/Views/Home/service.htm"

      });
  });

eine sehr einfache HTML-Datei wie unten schlägt ebenfalls fehl

  <body ng-controller="home.RootController">

    <ul class="nav">
      <li ng-repeat="menu in menus" "="">
        <a href="{{menu.link}}">{{menu.name}}</a>
      </li>
    </ul>
    <div ui-view> No data yet!</div>
  </body>

wenn ich jedoch auf den Link klicke, sehe ich, dass die Ansichten aktualisiert werden, aber das $ routeChangeSucces-Ereignis wird nie ausgelöst.

fehlt mir etwas?

Eine andere Frage, die ich hatte, war, dass es ein Ereignis gibt, an das ich mich anschließen kann, um zu wissen, dass die Ansicht fertig ist, sodass ich einige zusätzliche Verarbeitungsvorgänge starten kann, z. 

plnlr aber nicht voll funktionsfähig ...

Grüße Kiran

18
Kiran

Bitte überprüfen Sie dieses Wiki: State Change Events . Ein Auszug: 

  • $ stateChangeSuccess - Wird ausgelöst, wenn der Statusübergang abgeschlossen ist.

    $ scope. $ on ('$ stateChangeSuccess')
    function (event, toState, toParams, fromState, fromParams) {...})

Verwenden Sie also anstelle von $routeChangeSuccess den $stateChangeSuccess.

Weitere Informationen zu allen verfügbaren Ereignissen erhalten Sie im Wiki Ereignisse . Hier finden Sie, dass der für Sie passende Event_$viewContentLoaded... sein könnte.

42
Radim Köhler

stateChange -Ereignisse werden jetzt veraltet und entfernt. Verwenden Sie stattdessen Übergänge .

$transitions.onSuccess({}, function () {
    console.log("state changed");
});
0
Ohad Cohen