2016-07-14 14 views
5

我要寻找一个函数,会做这样的事情在角:角计算表达式就好像它是在HTML

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'对于一个简单的字符串插值IMO(如果这就是OP所需的全部内容)可能有点矫枉过正,尽管它也起作用 - 它实际上在内部使用了'$ interpolate'。 – plamut