可以使用$ parse或$ eval来评估加密的布尔方程吗?

时间:2015-07-20 20:01:53

标签: javascript angularjs parsing eval

我试图更好地理解$ parse和$ eval,并弄清楚它们是否(或可以)以我认为可行的方式使用。我创建了一个https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/projections/polar.py来显示我的问题/问题并引用他们的行

我有一个带有布尔表达式的对象作为字符串值,它将从外部源(script.js第6-10行)提供给我:

$scope.input123456abcdefg;

$scope.object123456abcdefg = {
  disabled: "input123456abcdefg == 'hello'"
};

我已经尝试了一些代码演练,所有这些都已经基本归结为(我的理解)这两种类型的操作/函数(script.js第12-15行):

var template_v1 = $parse('object123456abcdefg.disabled');
$scope.expression_v1 = template_v1($scope);

$scope.expression_v2 = $scope.$eval('object123456abcdefg.disabled');

我期望(希望)$ parse或$ eval做的是创建一个等价于(script.js第17行):

$scope.expression_v3 = $scope.input123456abcdefg == 'hello';

但是,我只返回了与我开始时相同的字符串,您可以看到在DOM上进行评估(index.html第24行和第28行)。

可以以这种方式使用$ parse或$ eval,如果是这样的话我在哪里丢球?或者Angular中有另一个选项可以执行此类操作吗?

1 个答案:

答案 0 :(得分:1)

根据@dandavis的建议,如果可能,我会完全避免使用eval()。Here a small explanation from MDN

为什么要传递object123456abcdefg.disabled的值?

编辑:如果你真的找不到另一种方法,这就是你使代码工作的方式:

$scope.expression_v2 = $scope.$eval($scope.object123456abcdefg.disabled);
相关问题