Javascript 如何使用ES6将服务注入AngularJS中的指令
以下是我的指令索引:Javascript 如何使用ES6将服务注入AngularJS中的指令,javascript,angularjs,service,components,directive,Javascript,Angularjs,Service,Components,Directive,以下是我的指令索引: 'use strict'; import SignupService from './core/services/signup.service'; import FooterDirective from './components/footer/footer.directive'; import MenuDirective from './components/menu/menu.directive'; export default angular.module('i
'use strict';
import SignupService from './core/services/signup.service';
import FooterDirective from './components/footer/footer.directive';
import MenuDirective from './components/menu/menu.directive';
export default angular.module('index.components', [])
.directive('footer', FooterDirective)
.directive('menu', [MenuDirective, function(SignupService) {}]);
和指令:
import tmpl from './menu.tpl.html';
class Menu {
constructor($scope) {
this.scope = $scope;
this.restrict = 'AC';
this.transclude = true;
this.replace = true;
this.templateUrl = tmpl;
this.scope = {
ngSrc: "@",
};
}
link(scope, elem, attrs) {
console.log(scope.SignupService);
scope.logoutCall = () => {
this.SignupService.logoutSubmit();
}
}
}
function factory() {
"ngInject";
return new Menu(...arguments);
}
export default factory;
我需要从菜单指令访问
注册服务
,但我有此错误-不正确的注入令牌!服务名称应为字符串,函数为factory()
。如何以及什么是向指令注入服务的最佳实践。您的依赖注入似乎是错误的
而不是
.directive('menu', [MenuDirective, function(SignupService) {}]);
应该有
.directive('menu', ['SignupService', function(SignupService) {}]);
菜单指令的声明在哪里?看看这个。这似乎与你的问题相似