将类似快速的字符串转换为Angular视图中的表达式

时间:2016-07-11 03:44:52

标签: angularjs expression

假设我的范围中有一个类似表达式的字符串

$scope.expressionString = 'model.key == "anything"'

我想在视图中使用此字符串作为表达式,我可以这样做吗?

在视图中,我会有类似

的内容

<div ng-if="expressionString"></div>但是,当然,expressionString应该是别的东西。

我感谢任何帮助。干杯!

3 个答案:

答案 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"