angularjs从变量执行表达式 [英] angularjs execute expression from variable

查看:38
本文介绍了angularjs从变量执行表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从变量执行表达式?

How to execute expression from variable?

我需要类似公式的内容,该公式取决于其他输入.例如我的数据:

I need something like formula which depends from another inputs. For example my data:

    $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>

我希望结果是3但这当然是{第一} + {第二}

I want that the result was 3 But it's {first}+{second} ofcourse

推荐答案

<div ng-switch-when="formula">
    <span>
        {{getFormulaResult(item.formula)}}
    </span>
</div>

控制器方法:

$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;
}

这篇关于angularjs从变量执行表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆