2016-10-27 12 views
1

私は次のコードを使用して、矢印の機能を使用して作業を完了させています。これは、矢印機能をサポートするChromeとFirefoxで完全に機能します。自己呼び出し関数をJavaScriptの関数引数として渡すにはどうすればよいですか?

this._subscription = this._modal.shown.subscribe(() => this._el.nativeElement.focus()); 

しかし、これはIE 11では正しく機能しません。したがって、この矢印関数を匿名の自己呼び出し関数に変換しようとしています。私は以下を行った:

this._subscription = this._modal.shown.subscribe((function(){ this._el.nativeElement.focus()})()); 

しかし、上記のコードは機能しません。私は何か間違っているのですか?これどうやってするの。どんな提案や助けもありがとうございます。上記の答えのコメントで述べたよう@harmic、これはもはや、この場合のスコープの変更など、以前の値を参照しないであろう、ここで

this._subscription = this._modal.shown.subscribe((function(){ this._el.nativeElement.focus();}).bind(this)); 

+3

あなたがそれを渡したいのであれば、なぜそれをすぐに呼び出すのですか?矢印関数はすぐに呼び出されません。 –

+0

次のコードビットの最初のコードビットと同等の処理を行うにはどうすればよいですか? @squint –

+2

@Marley直ちに関数を実行しないで、 '(function(){...})()'の最後にある '()'を削除して、無名関数が呼び出されないようにしてください。あなたの最初のコードスニペットでは、関数の参照を与えて、それを呼び出さない。 –

答えて

1

はこれを行います。だから、これを縛ってそれを効かせる必要があります。

関連する問題