考虑一下Brad Green的 AngularJS 的这个片段。
var directives = angular.module('guthub.directives', []);
directives.directive('butterbar', ['$rootScope',
function ($rootScope) {
return {
link: function (scope, element, attrs) {
element.addClass('hide');
$rootScope.$on('$routeChangeStart', function () {
element.removeClass('hide');
});
$rootScope.$on('$routeChangeSuccess', function () {
element.addClass('hide');
});
}
};
}]
);
directives.directive('focus', function () {
return {
link: function (scope, element, attrs) {
element[0].focus();
}
};
});
请注意,对于“butterbar”指令,他传入了一个数组,其中第一项只是一个带有依赖项名称的字符串,"$rootScope"
第二项是一个函数。该函数声明了对$rootScope
. 为什么我们在这里重复自己?特别是当它似乎可以做到这一点时:
directives.directive('butterbar', function ($rootScope) {
return {
link: function (scope, element, attrs) {
element.addClass('hide');
$rootScope.$on('$routeChangeStart', function () {
element.removeClass('hide');
});
$rootScope.$on('$routeChangeSuccess', function () {
element.addClass('hide');
});
}
};
});
我猜测作为字符串的依赖名称具有某种意义。谁能告诉我为什么他们在整本书中都这样做(而不仅仅是为了指令)?