2016-07-14 4 views
5

式を評価:は、私が角にこのような何かをする関数を探しています

var testValues = { 
    name: 'John Doe', 
    number: 15 
} 
somefunction('Hello, {{name}}, you are {{number}} years old', testValues) 
// returns 'Hello, John Doe, you are 15 years old' 

私は$ evalはこれに似た何かを知っているが、それは、二重持つことはできませんその中の括弧。

+0

'$ compile()' ...を試してみませんか? – malix

答えて

3

あなたはおそらく$interpolateサービスを探しています。ドキュメントから

例:

var $interpolate = ...; // injected 
var exp = $interpolate('Hello {{name | uppercase}}!'); 
expect(exp({name:'Angular'})).toEqual('Hello ANGULAR!'); 

$interpolateだけテンプレートのように文字列をコンパイルし、及び提供されるコンテキストを使用して文字列を出力する関数を返します。

3

テンプレートを手動でコンパイルできます。 $compileサービスを注入し、$scopeオブジェクトに対してテンプレートをコンパイル:

$scope.model = { 
    name: 'tom' 
}; 

$compile('<div>Hello {{model.name}}</div>')($scope); 

これは、DOMオブジェクトの周りに巻かれるjqLit​​eオブジェクトを返します。

+0

'$ compile'は実際には' $ interpolate'を内部的に使用していますが、 '$ compile'は単純な文字列補間IMO(これはOPが必要なすべて)のための少しの過小です。 – plamut

関連する問題