0

私のプロジェクトでは、テーブルに 2 つの列があります。下の図で確認できます。 ここに画像の説明を入力

私が欲しいのは - 「非受領数量」列で、いくつかの値を変更すると、「注文数量」列に応じて影響します.Ex.最初の行では、非受領数量は4で、3に減らすと注文数量は 7 から 6 になります。非受信数量を 4 から 5 に増やすと、注文数量は 7 から 8 になります 。angularjs $watch を使用してそれを行うにはどうすればよいですか? 私のコード: 私のhtmlで--

<table class="table table-striped">
                    <thead>
                        <tr>
                            <th>Procuct Code</th>
                            <th>Product Name</th>
                            <th>Description</th>
                            <th>Unit Price</th>
                            <th>Order Quantity</th>
                            <th>Non Receive Quantity</th>
                            <th>Total</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr ng-repeat="pr in prodDetails">
                            <td>{{pr.PRODUCTCODE}}</td>
                            <td>{{pr.PRODUCTNAME}}</td>
                            <td>{{pr.DESCRIPTION}}</td>

                            <td>
                                <div ng-class="{ 'has-error' : poForm.unitprice{{$index}}.$invalid && submitted }">
                                    <input ng-model="pr.RATE" type="text" name="unitprice{{$index}}" ng-blur="getTotal(pr)" class="form-control input-sm" required />
                                </div>
                            </td>

                            <td>
                                <div ng-class="{ 'has-error' : poForm.poquantity{{$index}}.$invalid && submitted }">
                                    <input type="text" ng-model="pr.POQUANTITY" name="poquantity{{$index}}" ng-blur="getTotal(pr)" class="form-control input-sm" required readonly/>
                                </div>
                            </td>

                            <td>
                                <div ng-class="{ 'has-error' : poForm.quantity{{$index}}.$invalid && submitted }">
                                    <input type="text" ng-model="pr.QUANTITY" name="quantity{{$index}}" ng-blur="getTotal(pr)" class="form-control input-sm" ng-change="OrderQuantityChange(pr)" required />
                                </div>
                            </td>

                            <td>{{pr.TOTAL}}</td>
                        </tr>

                        <tr>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td>Total Quantity: {{po.TOTORDERQTY}}</td>
                            <td>Total Price: {{po.TOTALPRICE}}</td>
                        </tr>
                    </tbody>
                </table>

prodDetails に入力する Controller データ内 --

function prepareProdDetail(detailLst)
        {
            scope.prodDetails = [];
            //scope.prodDetailsCompare = [];
            scope.products.forEach(function (prod)
            {
                var selProd = Enumerable.From(detailLst).FirstOrDefault(null, function (x) {
                    return x.PRODUCTCODE == prod.PRODUCTCODE;
                });
                if (selProd != null) {
                    prod.isSelect = true;

                    scope.prodDetails.push(selProd);
                    //scope.prodDetailsCompare.push(selProd);
                }
                else
                {
                    prod.isSelect = false;
                }
            });

        }

やりたいこと/こんなこと--

function OrderQuantityChange(row)
        {
            scope.$watch('row.POQUANTITY', function (newValue, oldValue) {
                row.QUANTITY = row.QUANTITY+(oldValue - newValue);
            });
        }
4

1 に答える 1

0

これは、私たちのプロジェクトで使用する種類の構造です。

scope.$watch('vm.param.property', (new, old) => {
  const partner = vm.param.otherProperty;
  partner.value = partner.value + (new - old);
});

それはあなたの2つの価値をリンクするはずです。私はこれをテストしていませんが、かなり最近それを行ったという記憶から取っています。

編集:これをコンストラクター内に配置する場合、2行目は「vm」ではなく「this」である必要があります。

于 2016-11-01T09:09:12.413 に答える