2

我使用 angularJS v1.0.0 创建了一个指令,一切正常,现在我将 angular 更新到 v1.0.7 并且我的指令不再工作,我尝试了许多不同的方法来修复它,但我无法让它工作。

我尝试将 $beginRouteChange 替换为 $routeChangeStart 并将 $afterRouteChange 替换为 $routeChangeSuccess ,但仍然无法正常工作

它只是在应用程序繁忙时显示“正在加载...”消息的文本。您可以在此处查看示例:

http://mhevery.github.io/angular-phonecat/app/#/phones

指示:

working version in AngularJS 1.0.0 but not in v1.0.7

'use strict';

/* Directives */

var directive = {};

directive.butterBar = function($rootScope) {
  return {
    restrict: 'C',
    link: function(scope, element) {
      $rootScope.$on('$beginRouteChange', function() {
        element.addClass('show');
        element.text('Loading...');
      });
      $rootScope.$on('$afterRouteChange', function() {
        element.removeClass('show');
        element.text('');
      });
    }
  };
};

angular.module('phonecatDirectives', []).directive(directive);

谢谢!

4

2 回答 2

5

捕捉路线变化的正确事件是:

$routeChangeStart
$routeChangeSuccess
$routeChangeError
$routeUpdate

请参阅$route 文档

在您的情况下使用:

$rootScope.$on('$routeChangeStart', function() {
    element.addClass('show');
    element.text('Loading...');
});
$rootScope.$on('$routeChangeSuccess', function() {
    element.removeClass('show');
    element.text('');
});
于 2013-08-01T15:30:19.150 回答
1

请查看文档:http ://docs.angularjs.org/api/ng.$ro​​ute

$beginRouteChange并且$afterRouteChange不支持。

而是使用$routeChangeStart$routeChangeSuccess

于 2013-08-01T15:26:55.820 回答