繁体   English   中英

表达式中的表达式AngularJS

[英]Expression in an expression, AngularJS

可以在表达式内求值吗?

例如:

<span ng-bind-template="{{test}}"></span>

其中test如下:

$scope.test = '{{a}} is equal to {{b}}';

ab可以是任意值,假设两个整数。

因此,我想对其进行两次评估。

也许我应该只创建一个过滤器并在其中使用$ interpolate?

您可以使用以下命令手动对其进行$编译

scope.a = "1";
scope.b = "1";
var element = $compile('{{a}} is equal to {{b}}')(scope);

您有几种选择。 可以使用$parse服务评估单数表达式。 这是没有胡须的东西,即{{}}。 请注意,第一个调用为该表达式创建了一个函数,第二个调用传递了一个对象以针对该表达式进行求值:

parseA = $parse('a');
console.log(parseA({ a: 1 })); // 1 

可以使用$interpolate评估复杂的表达式。 这将解析胡须的代码,并针对您传递的对象评估胡须中的表达式。 再次,第一次调用将创建用于插值的函数,第二次调用将根据您传递的内容对其求值。我相信这就是您要寻找的内容:

interpolate = $interpolate('{{a}} is equal to {{b}}');
console.log(interpolate({ a: 1, b: 2})); // 1 is equal to 2 

最后,如果要获得完整的数据绑定代码段,请使用$compile 这会将$scope绑定到元素,因此它具有侦听器并参与摘要等。

compile = $compile('<div>{{a}}</div>');
scope = $scope.$new();
scope.a = 1; 
compile(scope); // <div>1</div> 

这是使用所有三种技术的完整工作提琴: http : //jsfiddle.net/jeremylikness/CAHKE/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM