Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs/js,用于根据输入计算$eval_Javascript_Angularjs_Eval - Fatal编程技术网

Javascript Angularjs/js,用于根据输入计算$eval

Javascript Angularjs/js,用于根据输入计算$eval,javascript,angularjs,eval,Javascript,Angularjs,Eval,我有几个输入字段。我想通过输入来解一个简单的公式。这些值也来自输入 input1给出长度,input2给出高度,input3给出宽度,input4给出一些参数,最后input5给出公式。我想根据输入的公式显示结果 到目前为止,我已经成功地做到了这一点: 算计 长度: {{value.length} 高度: 宽度: 参数: 公式: 公式可以是任何东西;2+l,l+h,2*l*(l+h+w*p) 结果:{$eval(公式)} 我想验证公式输入,以便除了l、h、w、p以及数

我有几个输入字段。我想通过输入来解一个简单的公式。这些值也来自输入

input1给出长度,input2给出高度,input3给出宽度,input4给出一些参数,最后input5给出公式。我想根据输入的公式显示结果

到目前为止,我已经成功地做到了这一点:


算计
  • 长度:
  • {{value.length}
  • 高度:
  • 宽度:
  • 参数:
  • 公式:
    公式可以是任何东西;2+l,l+h,2*l*(l+h+w*p)
  • 结果:{$eval(公式)}
  • 我想验证公式输入,以便除了l、h、w、p以及数字和运算符之外,不能输入其他字符。 我可能做得不对,如果是这样,请提供一些见解或示例


    谢谢。

    我已经为您实现了一个解决方案。我曾经评估过你的表达式,因为它是这种操作非常强大的库。在此代码中,也会处理异常,并为未知字符引发错误。希望这对你有帮助。谢谢

    var-app=angular.module(“演示”,[]);
    app.controller(“AppController”,函数($scope){
    $scope.syntexError=false;
    $scope.Calculate=函数(){
    var result=$scope.result;
    试一试{
    $scope.result=math.eval($scope.ReplaceVariable($scope.formula、$scope.l、$scope.h、$scope.w、$scope.p));
    $scope.syntexError=false;
    }捕获(e){
    if(例如message.indexOf(“未定义的符号”)!=-1){
    $scope.syntexError=true;
    }
    返回结果;
    }
    }
    $scope.ReplaceVariable=函数(公式、长度、高度、宽度、参数){
    公式=角度。小写(公式);
    公式=公式。替换(/l/g,长度);
    公式=公式。替换(/h/g,高度);
    公式=公式。替换(/w/g,宽度);
    公式=公式。替换(/p/g,参数);
    回报公式;
    }
    });
    
    
    算计
    
  • 长度:
  • {{value.length}
  • 高度:
  • 宽度:
  • 参数:
  • 公式:
    公式可以是任何东西;2+l,l+h,2*l*(l+h+w*p)
    无效字符。
  • 结果:{{Result}}

  • 如果公式可以是任何东西。你怎么能确定这个公式会有l,h,p,w模型来创建它呢?这里有一个开始:使用ng模式和适当的regexp。类似于
    [0-9lhwp+*/()-]+
    的内容可以作为一个开始。感谢您宝贵的努力和回答。这正是我需要做的。现在我将尝试在过滤器中实现这一点。我很高兴我能够提供帮助。谢谢
     <div>
      <h1>Calculate</h1>
      <li>
        Length : <input ng-model="l" type="number">
      </li>
      {{value.length}}
      <li>
        height : <input ng-model="h" type="number">
      </li>
      <li>
        width : <input ng-model="w" type="number">
      </li>
      <li>
        parameter : <input ng-model="p" type="number">
      </li>
      <li>
        formula : <input ng-model="formula"><br>
        formula can be anything;2+l,l+h,2*l*(l+h+w*p)
      </li>
      <li>
        Result :{{$eval(formula) }}
      </li>
    </div>