假设我的范围中有一个类似表达式的字符串
$scope.expressionString = 'model.key == "anything"'
我想在视图中使用此字符串作为表达式,我可以这样做吗?
在视图中,我会有类似
的内容 <div ng-if="expressionString"></div>
但是,当然,expressionString应该是别的东西。
我感谢任何帮助。干杯!
答案 0 :(得分:2)
您可以使用$eval
来评估您的表达方式,在您的情况下有两种方法可以执行此操作
解决方案1
<div ng-if="$eval(expressionString)"></div>
解决方案2
在控制器中存储表达式的评估值,如下所示
$scope.expressionString = $scope.$eval('model.key == "anything"')
然后在视图中使用它而不在视图中使用$ eval
<div ng-if="expressionString"></div>
答案 1 :(得分:0)
您不能在Angular表达式中使用全局变量(或函数)。 Angular表达式只是属性,字符串也不是Javascript代码。
Please see this stackoverflow answer once
虽然,您可以使用函数而不是变量来实现它:
$scope.expressionString = function(toCompare) {
return $scope.model.key == toCompare;
}
并在您看来:
<div ng-if="expressionString('anything')"></div>
答案 2 :(得分:0)
我找到了答案,制作了一个parse
过滤器来解析字符串并为其指定范围
angular.module('zehitomo')
.filter('parse', function ($parse) {
return function (expression, scope) {
return $parse(expression)(scope);
};
});
在视野中
ng-if="expressionString | parse:this"