2016-06-09 14 views
0

ここに私が達成しようとしているものがあります。Javascriptでテンプレート文字列の変数を置き換えるにはどうすればいいですか?

let something = 'first string'; 
let template = `asdf=${something}asdf`; 

some.method(template) 
    .then(function() { 
     let something = 'new string'; 
     console.log(template); 
     // does not return 'asdf=new stringasdf' like expected 
    }); 

私はどのようにテンプレートを保持したいのですが、スコープ内の関数内でいつでも変数をその中に入れ替えることができますか?だから、それはテンプレート自体がコードに表示された場所で評価され

let template = "asdf=" + something + "asdf"; 

+0

あなたの現在の設計に問題が通過が起こる前に、テンプレートの文字列を渡すと、基本的に通常の1に文字列を評価することです。 'some.method'に渡されたテンプレートが' $ {something} '節を含んでいるかもしれないし、そうでないかもしれないと考えると、これはまったく予期しない振る舞いではありません。 @ Robinの提案は正しいアプローチであり、動作を提供する関数にテンプレートをラップします。 –

答えて

1

テンプレートは、基本的にはの省略形です。

let template = function(something) { return `asdf=${something}asdf`; } 

は次に、あなたが行うことができます:

は、私はあなたが機能を使用したいと思う私は書いた

some.method(template(something)).then(function() { let something = 'new string'; console.log(template(something)); }); 
関連する問題