使用

2017-03-12 10 views
2

私は角に新たなんだ、とモジュールの状態を書くとき、私は習慣のうちわずかな変更を行ったチュートリアルに沿って追従しながら:使用

.state('sports.medals', { 
    url: '/:sportName', 
    templateUrl: 'sports/sports-medals.html', 
    resolve: { 
     sportService: function($http, $stateParams){ 
     return $http.get('/sports/${ $stateParams.sportName }'); 
     } 
    }, 

これは完全に罰金コンパイル残りのプロジェクトでは、エラーは発生しません。ただし、この関数を呼び出すと、内容を解析する代わりにgetの内容が1つの文字列として読み取られます。

これを呼び出すための正しい方法は明らかである:

私はほとんど常に排他的に単一引用符を使用していたプログラマーとして代わりに単一引用符 '

`アポストロフィ/バッククォートを使用して

.state('sports.medals', { 
     url: '/:sportName', 
     templateUrl: 'sports/sports-medals.html', 
     resolve: { 
      sportService: function($http, $stateParams){ 
      return $http.get(`/sports/${ $stateParams.sportName }`); 
      } 
     }, 

パラメータ内でjavascriptや二重引用符を使って作業していたので、これは私を驚かせ、すぐには分かりませんでした。どこかに文書化されているこの動作の理由はありますか?一重引用符で囲まれたバッククォートを使用する習慣に入るべきですか?私はこのような驚きを避けたいと思います。

+2

バッククォートテンプレートリテラルのES6/2015です - 彼らが知ってもいいですが、httpsの必要はありません://開発者を。 mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals - コードをもっと読みやすくすることはできますが、追加したいと思います。 –

+0

文字列にはほとんど常に排他的に '$ {...} 'パターンを使用していませんか? – Bergi

+0

非常によく似た/関連する質問[ここ](https://stackoverflow.com/q/27678052/465053)。 – RBT

答えて

4

文字列補間が機能するには、バッククォートが必要です。これは、テンプレートの補間と呼ばれるES6の機能です:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals。時にはそれが利用可能になることもありますが、ブラウザのサポートに関してはまだまだ広範囲です。あなたができるときにそれに精通し、それを使用してください!

2

javascriptのテンプレートリテラル/文字列リテラルはバックティックを使用します。それらは連結のための単純な構文糖であるE6機能です。現代のブラウザだけがE6を使用できるため、テンプレートリテラルは広くサポートされていません。

テンプレートリテラルは、二重引用符または一重引用符ではなくバックティック()(重アクセント)文字で囲まれています。ここで

より多くの情報が得られますMDNのドキュメントへのリンクです:Template literals