У меня есть проект, который является клиентским решением на основе angularJS, вызывающим API. Формулы, которые должны выполняться в клиентском решении, извлекаются из API, а параметры каждой формулы заменяются значениями, введенными пользователем клиента.
Формулы немного сложны, а не являются простым сложением или делением ....
Пример:
"if('rented' == 'owned')
{ return 50 + 25;
} else if( 'rented' == 'rented')
{return 25;}
else
{ return '' ;
}"
Чтобы выполнить эту строку, было предложено использовать $scope.$eval(string)
. Я пробовал это с некоторыми простыми параметрами как $scope.$eval('1 + 2')
, и это работало успешно. Но в приведенном выше примере он выдает ошибки разбора, подобные этой:
Полная функция angularJS в контроллере приведена ниже:
$scope.calulateFormula = function (formula) {
formula = formula.replace(/\[P1]/g, $scope.param1.value);
formula = formula.replace(/\[P2]/g, $scope.param2.value);
return $scope.$eval(formula);
}
На странице HTML:
<tr ng-repeat="formula in lstFormulas">
</td>
<td ng-bind="calulateFormula(formula)">
</td>
</tr>
lstFormulas извлекается из API.
Так, как я могу решить эту проблему и заставить формулы работать на моей веб-странице?