Javascript 角度'中的点(嵌套)表示法;s插值系统
假设我有一个对象,例如:Javascript 角度'中的点(嵌套)表示法;s插值系统,javascript,angularjs,Javascript,Angularjs,假设我有一个对象,例如: obj = {foo: 42, bar: 'moo'} 和插值字符串,例如: s = 'Do {{ bar }} {{ foo }} times.' 以角度对其进行插值: var interp = $interpolate(s); var res = interp(obj); console.log(res); // <--- This will return 'Do moo 42 times.' var interp=$interpole; var re
obj = {foo: 42, bar: 'moo'}
和插值字符串,例如:
s = 'Do {{ bar }} {{ foo }} times.'
以角度对其进行插值:
var interp = $interpolate(s);
var res = interp(obj);
console.log(res); // <--- This will return 'Do moo 42 times.'
var interp=$interpole;
var res=内部(obj);
console.log(res);// 服务可以解决您的问题
$parse服务将角度表达式转换为函数
应将表达式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']);
var module=angular.module('name',[]);
module.directive('app',['$interpolate','$parse',function($interpolate,$parse){
返回{
链接:函数(){
var obj={n:{foo:42},bar:'moo',x:'n.foo'};
obj.parserFunc=$parse(obj.x);
var s='Do{{bar}}{{parserFunc(this)}}泰晤士报。;//你的代码在jsfiddle
中运行得很好。试试@DmitriyLoskutov的确,我对自己的代码感到困惑。不管怎样,有什么方法可以计算一个已经计算过的插值吗?我的意思是,看看我粘贴的小提琴。x
是n.foo
,但是我如何引用对象本身进行插值{x}
将实际返回obj.n.foo
的值?我猜。但我认为这不好:)尝试从
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']);