一尘不染

为什么从未调用$ routeChangeSuccess?

angularjs

我正在我的应用程序上执行以下操作,但是我无法获取routeChangeSuccess事件。

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"

      });
  });

如下所示的非常简单的html也会失败

  <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>

但是,当我单击链接时,我看到视图正在更新,但是从未触发$ routeChangeSucces事件。

有什么我想念的吗?

*我遇到的 *另一个问题 是,可以挂接一个事件以知道视图已准备好,这样我就可以开始一些其他处理,例如document.ready()。

plnlr但不能完全正常工作…

问候基兰


阅读 191

收藏
2020-07-04

共1个答案

一尘不染

请检查此Wiki:状态更改事件。摘录:

  • $ stateChangeSuccess-状态转换完成后触发。

$ scope。$ on(’$ stateChangeSuccess’,
function(event,toState,toParams,fromState,fromParams){…})

因此,而不是$routeChangeSuccess使用$stateChangeSuccess

要获取有关所有可用事件的更多详细信息,请查看Wiki Events
在这里,您会发现最适合您的活动可能是$viewContentLoaded

2020-07-04