Angular 插值系统中的点(嵌套)表示法
Dot (nested) notation in Angular's interpolate system
假设我有一个对象,例如:
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);
$parse服务可以解决您的问题。
$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']);
代码在 jsfiddle.net/utnqdfwd/5/中工作正常
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- d3中堆栈函数和嵌套函数之间的差异
- 如何打印嵌套对象的所有值
- JavaScript 中的嵌套函数和 “this” 关键字
- 在javascript中使用方括号表示法的嵌套对象
- 在 Javascript 中表示复杂/嵌套数据
- JavaScript对象表示嵌套对象未定义
- Angular 插值系统中的点(嵌套)表示法
- 正则表达式提取带有嵌套函数(javascript)的函数表示法
- 如何将字符串点表示法转换为嵌套对象
- UnCaught TypeError-Javascript中的嵌套对象?为什么不允许这样做?对象文字表示法有效
- 创建具有嵌套对象的复杂表单的JSON表示,并更新骨干模型
- Javascript创建嵌套对象变量以保存点表示
- 如何通过字符串作为括号表示法在javascript中获取嵌套对象
- 获取表示对象/对象内嵌套对象级别的数字
- 在Backbone中表示任意深度嵌套列表的最简单方法