我正在使用装饰器扩展第三方指令。我想访问装饰器中的一个工厂。我怎么能这样做?
$provide.decorator( 'multiSelectDirective', function( $delegate ) {
var directive = $delegate[0],
link = directive.link;
// wipe out the shitty template
directive.template = '';
// make with the new template!
directive.templateUrl = 'app/partials/filters.template.html';
// hook into the compile phase of the directive
directive.compile = function( ) {
// the function returned by compile is the new link function
return function( $scope, el, attrs ) {
// run the original link function.
link.apply(this, arguments);
$scope.filterClicked = function( buttonName, selection ) {
handleFilterClick( buttonName, selection, JiraData, GreyGooseApi );
}
}
};
return $delegate;
});
答案 0 :(得分:0)
我明白了。我能够以下列方式注入依赖项:
$provide.decorator( 'multiSelectDirective',
[ '$delegate', 'JiraData', 'GreyGooseAPI',
function( $delegate, JiraData, GreyGooseApi ) {
var directive = $delegate[0],
link = directive.link;
// wipe out the shitty template
directive.template = '';
// make with the new template!
directive.templateUrl = 'app/partials/filters.template.html';
// hook into the compile phase of the directive
directive.compile = function( ) {
// the function returned by compile is the new link function
return function( $scope, el, attrs ) {
// run the original link function.
link.apply(this, arguments);
$scope.filterClicked = function( buttonName, selection ) {
handleFilterClick( buttonName, selection, JiraData, GreyGooseApi );
}
}
};
return $delegate;
}]);
});
答案 1 :(得分:0)
您可以通过overloading
访问工厂公开的所有属性,如果未曝光您无法访问该属性。