$parse 或 $eval 可以用来评估一个 stingified 布尔方程吗?

Can $parse or $eval be used to evaluate a stingified boolean equation?

我试图更好地理解 $parse 和 $eval 并弄清楚它们是否(或可以)以我认为可能的方式使用。我创建了一个 plnkr 来显示我的 issue/question 并引用他们的台词

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

$scope.input123456abcdefg;

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

我尝试了一些代码演练,所有这些基本上都归结为(我的理解)这两种类型 operations/functions(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 line 17):

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

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

$parse 或 $eval 可以以这种方式使用吗?如果可以,我该把球扔在哪里?或者 Angular 中是否有另一个选项可以正确执行此类操作?

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

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

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

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