说我有一个对象,例如:
obj = {foo: 42, bar: 'moo'}
和插值字符串如:
s = 'Do {{ bar }} {{ foo }} times.'
在Angular中插入此内容:
var interp = $interpolate(s);
var res = interp(obj);
console.log(res); // <--- This will return 'Do moo 42 times.'
有没有办法可以表达点缀/嵌套表示法?例如:
obj = {n: {foo: 42}, bar: 'moo'}
s = 'Do {{ bar }} {{ n.foo }} times.' // <--- This doesn't work
var interp = $interpolate(s);
var res = interp(obj);
console.log(res);
答案 0 :(得分:2)
$parse服务可以解决您的问题。
$ parse service将角度表达式转换为函数。
您应该将表达式 n.foo 转换为函数:
var parserFunc = $parse(obj.x)
现在,如果将parserFunc函数与要解析的参数一起使用,它将根据表达式返回值。解决方案可以是:
var module = angular.module('name', []);
module.directive('app', ['$interpolate','$parse', function ($interpolate,$parse) {
return {
link: function () {
var obj = {n: {foo: 42}, bar: 'moo', x: 'n.foo'};
obj.parserFunc = $parse(obj.x);
var s = 'Do {{ bar }} {{ parserFunc(this) }} times.'; // <--- x is 'n.foo'
var interp = $interpolate(s);
var res = interp(obj);
console.log(res);
}
}
}]);
angular.bootstrap(document, ['name']);
中正常工作