我正在尝试从表中查找净值。

Net Worth = Sum(Stock Price * Shares Held)

下表是根据用户选择创建的表。 javascript - 如何使用angular js从动态生成的表及其行中计算值?-LMLPHP

例如:从上表中,净值=(842.21 * 1 + 230.16 * 2 + 1002.2 * 2)。

我正在尝试ng-change,因为每次用户添加或删除股票时,networth都会更改。此外,当将一行添加到表中时,networth发生故障,我也面临css问题。

Here is the plnkr

  <section class="pickstocks">
    <label class="basiclabel">Manage Portfolio</label>
    <div class="pickstocks-align">
        <table>
            <thead>
                <tr>
                    <th>STOCK</th>
                    <th>PRICE</th>
                    <th>SHARES</th>
                    <th>WEIGHT</th>
                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="stock in stocksArray" class="portfoliokey">
                    <td>{{stock.key}}</td>
                    <td class="portfoliovalue">{{"&#x20b9;" + stock.value}}</td>
                    <td class="changer">
                        <input type="button" id="num1" ng-click="decrementValue( stock.index )" value="-">
                        <input type="button" id="number{{ stock.index }}" value="1" />
                        <input type="button" ng-click="incrementValue( stock.index )" value="+" />
                    </td>
                    <td>{{stock.weight}}</td>
                </tr>
            </tbody>
        </table>
        <div class="networth">
            <h3>Networth</h3>
        </div>
    </div>
</section>

最佳答案

这是Plunker供参考

要做的第一件事是将weight字段存储为与stock对象中的另一个字段一样。

mystock.weight = function(){return this.value*this.shares};


使其成为sharesvalue字段的功能,可以动态更新networth来更新其他两个字段。另外,将股票作为字段添加到股票对象还使我们以后可以更轻松地对其进行更新,因此我们只需要像这样增加/减少字段。

$scope.stocksArray[$scope.stocksArray.indexOf(stock)].shares++;


更改代码的最大部分是使代码客观化。盘点存货并用对象表示,以后我们可以轻松修改和访问值。

完成之后,您要做的就是创建一个返回所有权重之和的方法,如下所示。

$scope.getNetWorth = function(){
      let total = 0;

      for(let i = 0; i < $scope.stocksArray.length; i++){
        total += $scope.stocksArray[i].weight()
      }

      return total.toFixed(2);
    }


然后像这样{{"&#x20b9;" +getNetWorth()}}在html中引用它

将来尝试使用OOP实践来简化代码并将数据转换为对象表示形式,这将节省您的时间和精力,以后再尝试操作和访问数据。

10-07 14:06