AngularJS v1.0.0指令在v1.0.7中不起作用

时间:2013-08-01 15:17:11

标签: angularjs

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

我试图为$ routeChangeStart替换$ beginRouteChange,为$ routeChangeSuccess替换$ afterRouteChange但仍无法正常工作

它只是一个文本,显示应用程序繁忙时的“加载...”按摩。你可以在这里看到解释:

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

谢谢!

2 个答案:

答案 0 :(得分:5)

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

$routeChangeStart
$routeChangeSuccess
$routeChangeError
$routeUpdate

请参阅$route Documentation

在您的情况下使用:

$rootScope.$on('$routeChangeStart', function() {
    element.addClass('show');
    element.text('Loading...');
});
$rootScope.$on('$routeChangeSuccess', function() {
    element.removeClass('show');
    element.text('');
});

答案 1 :(得分:1)

请查看文档:{​​{3}}

$beginRouteChange$afterRouteChange不受支持。

而是使用$routeChangeStart$routeChangeSuccess