ng-repeatループ内の関数の出力にバインドする問題が発生しています。私は期待していたように、関数が1回ではなく2回呼び出されていることがわかりました。AngularJSリピートセクションで複数回呼び出される関数
<tr ng-repeat="row in timesheetRows">
<td>
<select ng-model="row.categoryID">
<option ng-repeat="category in categories" value="{{category.id}}">
{{category.title}}
</option>
</select>
</td>
<td ng-repeat="day in row.dayValues">
<input type="text" ng-model="day.hours" />
</td>
<td>{{calcRowTotal($index, row)}}</td>
</tr>
calcRowTotal()関数は次示されている:ここでNGリピート部(端でcalcRowTotal()呼び出しを気付か)だ
$scope.calcRowTotal = function (index, row) {
console.log('calcRowTotal - Index: ' + index);
var total = 0;
for (var i = 0; i < row.dayValues.length; i++) {
var num = parseFloat(row.dayValues[i].hours);
if (isNaN(num)) {
num = 0;
//this.dayValues[i].hours = 0;
}
total += num;
}
//updateDayTotals();
return total;
}
反復されている項目の一例次のようになります。
{
categoryID: 2,
dayValues: [
{ day: $scope.days[0], hours: 5 },
{ day: $scope.days[1], hours: 0 },
{ day: $scope.days[2], hours: 3 },
{ day: $scope.days[3], hours: 0 },
{ day: $scope.days[4], hours: 2 },
{ day: $scope.days[5], hours: 5 },
{ day: $scope.days[6], hours: 8 }
]
}
私は(2つの項目が、私はをループしていますコレクションに現在ある)コンソールで、次の見ている:
calcRowTotal - Index: 0
calcRowTotal - Index: 1
calcRowTotal - Index: 0
calcRowTotal - Index: 1
私は確かに "rowTotal"プロパティを作ることができますが、上記の関数で提供される "ライブ"データにバインドする方が好きです。うまくいけば、重複は私が行方不明になっているので、私は重複を見ている理由についてのフィードバックを感謝します。補足として、テキストボックスの1つのデータが変更されると、行の合計も更新する必要があるため、別の方法が必要になる可能性があります。最初はこの特定の状況を理解することに興味がありますが、潜在的に多くの行が存在する可能性があるため、間違いなく複製を望まないでください。ここで
は例です:http://jsfiddle.net/dwahlin/Y7XbY/2/
これはすぐには分かっていないかもしれませんが、これはhttp://stackoverflow.com/q/14973792/259038の複製です。 –
ありがとうございました。検索にかなり時間を費やしましたが、それを見ませんでした。情報を感謝します。 –
ええ、これは間違いなく、同じケースであることが明らかではないので、これを「削除する」種類の複製ではありません。私は、今後の視聴者のためにループを閉じたいと思っていました。 –