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!我怎么会看不见他呢!谢谢我将尝试修改您的代码以获得更难的表达式