angularjs从变量执行表达式
如何从变量执行表达式 我需要一些类似公式的东西,它依赖于其他输入。 例如,我的数据:angularjs从变量执行表达式,angularjs,Angularjs,如何从变量执行表达式 我需要一些类似公式的东西,它依赖于其他输入。 例如,我的数据: $scope.items = [{ name: 'first', formula: '', value: 1, type: 'text', },{ name: 'second', formula: '', value: 2, type: 'text', },{ name: 'third', formula: '{first}
$scope.items = [{
name: 'first',
formula: '',
value: 1,
type: 'text',
},{
name: 'second',
formula: '',
value: 2,
type: 'text',
},{
name: 'third',
formula: '{first}+{second}',
type: 'formula',
}];
我的看法是:
<ul>
<li ng-repeat="item in items">
<div ng-switch on="item.type">
<div ng-switch-when="text">
<input type="text" ng-model="item.value" name="{{item.name}}">
</div>
<div ng-switch-when="formula">
<span>{{item.formula}}</span>
</div>
</div>
</li>
-
{{item.formula}}
我希望结果是3
但它当然是{first}+{second}
<div ng-switch-when="formula">
<span>
{{getFormulaResult(item.formula)}}
</span>
</div>
{{getFormulaResult(item.formula)}
控制器方法:
$scope.getFormulaResult = function(formula){
var formulaSplits = formula.split("+");
var left = formulaSplits[0];
left = left.substr(1);
left = left.substring(0, left.length-1);
var right = formulaSplits[1];
right = right.substr(1);
right = right.substring(0, right.length-1);
var sum = 0;
for(var i = 0; i < $scope.items.length; i++){
if($scope.items[i].name == left || $scope.items[i].name == right){
sum = sum + parseInt($scope.items[i].value, 10);
}
}
return sum || 0;
}
$scope.getFormulaResult=函数(公式){
var formulaSplits=公式.split(“+”);
var left=公式拆分[0];
左=左。substr(1);
左=左。子字符串(0,左。长度-1);
var right=公式拆分[1];
右=右。substr(1);
右=右。子字符串(0,右。长度-1);
var总和=0;
对于(变量i=0;i<$scope.items.length;i++){
if($scope.items[i].name==left | |$scope.items[i].name==right){
sum=sum+parseInt($scope.items[i].value,10);
}
}
返回和| | 0;
}
你怎么期望{first}+{second}
是3?噢,忘了解释它了!很抱歉,我要从input[name=first]和input[name=second]中获取值并对其应用sum。您需要使用控制器方法来计算公式,如我在答案中所示。parseInt!我怎么会看不见他呢!谢谢我将尝试修改您的代码以获得更难的表达式