AngularJS ng-repeat Math Pow

AngularJS noob在这里.当用户在输入字段中输入数字时,我正在尝试动态生成表,并且该表按顺序返回10行指数值.例如:

<div ng-controller='myController'>
<input type="text" ng-model="number">
<table>
<tr><th>Index</th><th>Number</th>
<tr ng-repeat='item in ebooks'><td>{{$index}}</td><td>{{ item.amt}}</td><td> {{ Math.pow(number, $index+1 }}</td>
<td>{{  Math.pow(number,$index+1) * item.amt   }}</td></tr>
</table>
</div>

在我的控制器中,我有一个数据集电子书.

app.controller('myController',function($scope) {
$scope.ebooks = [{amt:0.25},{amt:0.10},{amt:0.05},{item:0.02}];
});

我正在尝试生成表格,其中单元格编号将显示相应的指数编号,另一列将指数编号与项目值相乘.我想我应该使用服务或工厂,但我不知道什么是正确的方法.我想要的结果是:

 enter number = 5
 Item     Price   Number  Total
  1       0.25    5        1.25
  2       0.1     25        2.5
  3       0.05    125       3.25

在我的服务中我尝试这样做:

app.service('MathService', function(){
this.Expo = function (a) {return Math(a, $index +1)};
});

但它不会那样工作.

我在Factory阅读了一些关于映射数组的其他教程,但是无法理解它.
我想我需要在工厂中通过以某种方式将Expo键添加到电子书数据集来创建它,所以看起来像{item:value,expo:value}.

非常困惑和搞砸了.救命!

最佳答案 只需使用$filter,如下所示:

.filter('mathPow', function(){
    return function(base, exponent){
        return Math.pow(base, exponent);
    }
})

您可以在视图中使用它:

<div ng-controller='myController'>
    <input type="text" ng-model="number">
    <table>
        <tr><th>Index</th><th>Number</th></tr>
        <tr ng-repeat='item in ebooks'>
            <td>{{$index}}</td>
            <td>{{ item.amt}}</td>
            <td>{{ number|mathPow:$index+1 }}</td>
            <td>{{ (number|mathPow:($index+1))*item.amt}}</td>
        </tr>
    </table>
</div>

Example

点赞