Javascript AngularJS:注入$timeout在指令中不可用
我正在向以下指令中注入Javascript AngularJS:注入$timeout在指令中不可用,javascript,angularjs,angularjs-directive,ecmascript-6,angularjs-timeout,Javascript,Angularjs,Angularjs Directive,Ecmascript 6,Angularjs Timeout,我正在向以下指令中注入$timeout,但它没有定义 以下代码将未定义的打印到控制台并抛出TypeError:$timeout不是一个函数 我认为问题在于,你没有注入任何东西,你只是指定了一个参数$timeout,它就像一个可能被注入的服务的占位符。要修复此问题,请添加foo.$inject=['$timeout']到文件末尾,如下所示: export default class foo { constructor ($timeout) { 'ngInject';
$timeout
,但它没有定义
以下代码将未定义的打印到控制台并抛出TypeError:$timeout不是一个函数
我认为问题在于,你没有注入任何东西,你只是指定了一个参数
$timeout
,它就像一个可能被注入的服务的占位符。要修复此问题,请添加foo.$inject=['$timeout']代码>到文件末尾,如下所示:
export default class foo {
constructor ($timeout) {
'ngInject';
this.restrict = 'A';
this.scope = {};
this.$timeout = $timeout;
console.log( $timeout );
$timeout( function() {
alert('timeout');
}, 0 );
}
link($scope, $element, $attrs, $ctrl) {
}
// Create an instance so that we can access this inside link
static factory() {
foo.instance = new foo();
return foo.instance;
}
}
foo.$inject = ['$timeout'];
有几个例子也分别从类定义中进行注入
或者要通过静态工厂(正如您可能打算的那样),文件末尾将是foo.factory.$inject=['$timeout']
,并且您还必须调整工厂函数,以便为您提供并传递注入的服务:
export default class foo {
constructor ($timeout) {
'ngInject';
this.restrict = 'A';
this.scope = {};
this.$timeout = $timeout;
console.log( $timeout );
$timeout( function() {
alert('timeout');
}, 0 );
}
link($scope, $element, $attrs, $ctrl ) {
}
// Create an instance so that we can access this inside link
static factory($timeout) {
foo.instance = new foo($timeout);
return foo.instance;
}
}
foo.factory.$inject = ['$timeout'];
export default class foo {
constructor ($timeout) {
'ngInject';
this.restrict = 'A';
this.scope = {};
this.$timeout = $timeout;
console.log( $timeout );
$timeout( function() {
alert('timeout');
}, 0 );
}
link($scope, $element, $attrs, $ctrl ) {
}
// Create an instance so that we can access this inside link
static factory($timeout) {
foo.instance = new foo($timeout);
return foo.instance;
}
}
foo.factory.$inject = ['$timeout'];