Javascript Angularjs/js,用于根据输入计算$eval
我有几个输入字段。我想通过输入来解一个简单的公式。这些值也来自输入 input1给出长度,input2给出高度,input3给出宽度,input4给出一些参数,最后input5给出公式。我想根据输入的公式显示结果 到目前为止,我已经成功地做到了这一点: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以及数
算计
长度:
{{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>