2

私のAngular 1.4.8アプリでは、元の値とユーザーが変更した後の値の差を計算したいと考えています。

<table>
  <tr>
    <td>Value</td>
    <td>Difference</td>
  </tr>
<tr ng-repeat="value in values">
  <td>{{ value }}</td>
  <td>{{ ::value - value }}</td>
<tr>
</table>

値は配列です (例: ) $scope.values = [1,5,8,3];

しかし、これはうまくいきません。Angular は最初に減算を行い、次に差分フィールドを永久にゼロにバインドします。または、これを行うと、クラッシュするだけです:

<td>{{ (::value) - value }}</td>
4

1 に答える 1

2

ワンタイムバインディング演算子は結合的ではなく、ウォッチ式全体に適用されます。できることは、変数を一度だけ設定して使用することです。

<tr ng-repeat="value in values">
  <td>{{:: originalValue = value }}</td>
  <td>{{originalValue - value }}</td>
<tr>

この例では、最初のウォッチャーはoriginalValue安定するまで計算を行い、その時点でウォッチャーは登録解除され、DOM と の値の両方が凍結されますoriginalValue。2 番目のウォッチャーは、凍結された値を使用して式の計算を続行します。

于 2016-03-06T23:48:05.333 に答える