如何使用angular将值推入公式表达式

时间:2017-03-06 09:35:48

标签: html angularjs

我有一个类似a+b+1500+ca*b+1500的公式,任何数学表达式我都有a,b和c的值,  并且我在角度脚本中声明了a,b,c的值。如何在表达式中推送a,b,c值  我已经尝试但没有在我之前的问题中发布,但没有回复, 你能否建议如何进行这个公式计算

我有文本框,在更改此文本框时我想要计算公式并绑定结果

视图

  Formula:<input type="text" ng-model="Formula" ng-blur="CalculateFormula(Formula)" />

    {{result}}

 var a = 12;
    var b = 20;
    var c = 8;
    $scope.CalculateFormula = function (Formula) {
       //on change am getting formula here ex. a+b+1500+c how to push a, b, c values in this expression

    }

你能建议怎么做吗

3 个答案:

答案 0 :(得分:0)

如果您希望用户在框中输入有效的数学公式并将结果发布到{{result}}变量,那么您需要做的就是:

$scope.CalculateFormula = function (Formula) {
        //on change am getting formula here ex. a+b+1500+c how to push a, b, c values in this expression
        $scope.result = eval(Formula);
    }

这适用于任何有效的数学公式,包括a,b和c变量,例如* b + c(结果= 248)

答案 1 :(得分:0)

检查工作plnkr http://plnkr.co/edit/e5Ts95hFvx3rcVguefzs?p=preview

计算公式

$scope.CalculateFormula = function(formula){
  $scope.result = eval(formula);
  }

答案 2 :(得分:0)

仅仅是一个FYI,在用户输入上使用eval会带来一些相当大的安全风险......例如,如果你输入

alert('test')

你会注意到字符串被评估为javascript并弹出一个警告。这允许用户在这个不安全的输入上运行他们想要的任何JS。

因此,您应该在使用eval之前先验证输入。像MathJS这样的东西会为你处理这个验证。

使用MathJS eval的示例:

$scope.CalculateFormula = function (Formula) {
    //on change am getting formula here ex. a+b+1500+c how to push a, b, c values in this expression
    $scope.result = math.eval(Formula);
}

MathJS还有许多其他有用(和安全)的助手,可用于常见的数学运算。