Angularjs 如何在angular中计算表达式运行时

Angularjs 如何在angular中计算表达式运行时,angularjs,data-binding,angularjs-scope,Angularjs,Data Binding,Angularjs Scope,我是angular的新手,尝试在angular的运行时计算表达式,但失败了。这是我的代码 <!DOCTYPE html> <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> <body> <div ng-app="myApp" ng-controller="myCtrl"> Op

我是angular的新手,尝试在angular的运行时计算表达式,但失败了。这是我的代码

<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
Operant1: <input ng-model="Operant1">
Operantion: <input ng-model="Operantion">
Operant2: <input ng-model="Operant2">
<h1>You entered: {{parseInt(Operant1) parseInt(Operantion)  parseInt(Operant2)}}</h1>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.Operant1 = 2;
    $scope.Operantion = +;
    $scope.Operant2= 3;
});
</script>

</body>
</html>

操作1:
操作:
操作2:
您输入:{{parseInt(Operant1)parseInt(operanion)parseInt(Operant2)}
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.Operant1=2;
$scope.operanion=+;
$scope.Operant2=3;
});
此区域不是动态评估的。有没有办法不使用范围中定义的自定义函数并从表达式中调用它

编辑 我也试过这种方法,但失败了

<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
Operant1: <input ng-model="Operant1">
Operantion: <input ng-model="Operantion">
Operant2: <input ng-model="Operant2">
<h1>You entered: {{Calculate(parseInt(Operant1), Operantion,  parseInt(Operant2))}}</h1>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.Operant1 = 2;
    $scope.Operantion = +;
    $scope.Operant2= 3;

$scope.Calculate= function(op1,opt,op2) {
    if(opt==="+")
    {
        return op1+op2;
    }
    else if(opt==="-")
    {
        return op1-op2;
    }
    else if(opt==="*")
    {
        return op1*op2;
    }
    else if(opt==="/")
    {
        return op1/op2;
    }
}
});
</script>

</body>
</html>

操作1:
操作:
操作2:
您输入:{{Calculate(parseInt(Operant1)、operanion、parseInt(Operant2))}
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.Operant1=2;
$scope.operanion=+;
$scope.Operant2=3;
$scope.Calculate=函数(op1、op1、op2){
如果(opt==“+”)
{
返回op1+op2;
}
否则如果(opt==“-”)
{
返回op1-op2;
}
否则如果(opt==“*”)
{
返回op1*op2;
}
否则如果(opt==“/”)
{
返回op1/op2;
}
}
});
我纠正了我的错误

操作1:
操作:
操作2:
您输入:{Cal(操作1,操作1,操作2)}
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.Operant1=2;
$scope.operanion=“+”;
$scope.Operant2=5;
$scope.Cal=函数(op1、op1、op2){
如果(opt==“+”)
{
返回parseInt(op1)+parseInt(op2);
}
否则如果(opt==“-”)
{
返回parseInt(op1)-parseInt(op2);
}
否则如果(opt==“*”)
{
返回parseInt(op1)*parseInt(op2);
}
否则如果(opt==“/”)
{
返回parseInt(op1)/parseInt(op2);
}
}
});

不能直接在HTML内部绑定上使用javascript
本机方法。基本上,您编写的任何内容都是由带有范围值的
$parse
API间接评估的。所以
parseInt
方法不在控制器范围内,那么它就不会在那里求值

我要说的是,创建一个方法,它可以进行任何需要的计算

标记

<h1>You entered: {{cal(Operant1, Operantion, Operant2)}}</h1>

我想通过文本框提供+、-、*等。我不想硬编码+或-etc@Mou我是第四次读到这个问题的。。让我在几分钟后更新我的答案。。我只是想在angular API/引用中的任何地方添加解释这一点的文档链接,其中说明了一些关于“角度表达式”的内容。这些解析规则适用。@shaunhusain我现在明白你的意思了<代码>评估
最适合这种情况。。对不起我的错误解释谢谢你宝贵的评论。。我想得太多了:-D@PankajParkar显然,这发生在我们中最好的人身上。。。我想你可能会从中得到乐趣,这让我觉得这可能很危险,但我还不确定怎么做。似乎你不能插值运算符。我想我明白你现在的要求了,答案是否定的,您不能看到另一条注释,其中包含有关如何解析表达式的链接,或者在$parse和/或$interpolate源代码上读取表达式,以查看它在hood@shaunhusain我的最新答案看起来好吗?或者看起来像个黑客。。你的想法将不胜感激。。谢谢:-)
<h1>You entered: {{cal(Operant1, Operantion, Operant2)}}</h1>
$scope.cal = function(op1, op, op2) {
   var op1Parsed = Number(op1), //converting to number
       op2Parsed = Number(op2), //converting to number
       //creating string to be parsed.
       customExpression = op1Parsed + (op || "+") +op2Parsed; 
   //parsing a html manually to make calculation working
   return eval(customExpression);
};