jsviews バインディングを使用して、ページに 2 つの要約データを表示したいと考えています。UI はスクリーンショットのようなものになります。
ユーザーはリストから人物を追加/削除でき、それは「人数」の値に影響し、ユーザーはテキストボックスで整数値を編集でき、合計値が「合計金額」に表示されます。
はい。私はそれを機能させることができました..そこに私のコードを見てください。http://jsfiddle.net/michaelsync/eqhkzv3t/3/
しかし、それは非常に醜いと思います。特に、以下のコードです。
function observeAmounts(){
people.forEach(function (person){
$.observe(person, 'amount', function(e) {
var amount =0;
people.forEach(function(person){
amount += parseInt(person.amount);
});
$('#output2').html('Total Amount: ' + amount);
});
});
}
observeAmounts();
$.observe(people, function(e) {
var l = $.map(people, function(n, i) { return i; }).length;
$('#output1').html('Total No. of People: ' + l);
observeAmounts();
});
さて、私はまだチュートリアルとjsviewsのソースコード/テストを読んでいます。しかし、私はJsViewsにとってかなりのニュースです。現在のコードでは、配列を繰り返しループして合計金額と人数を計算しています。ヘルパー クラスを登録できるかもしれないと思いますが、値を計算するために「people」配列をループする必要があります。
ですから、JsViews にはもっと良い方法があるのではないかと思います。JsViews のサイトでは、ここに質問を投稿するように指示されており、JsViews の作成者もここにいるので、これらの要約データの処理を進めるために、ここに投稿することにしました。(はい、ここで私のテスト コードを表示することもできますhttp://jsfiddle.net/michaelsync/eqhkzv3t/3/ )
アドバイスをいただければ幸いです。ありがとう!